在Java的正则表达式中,[]
是用来定义一个字符集(character class)的。使用字符集可以匹配括号内的任何一个单个字符。下面是关于 []
的一些基本用法和例子:
-
匹配特定字符:
[abc]
匹配 ‘a’ 或 ‘b’ 或 ‘c’。
-
范围表示:
[a-z]
匹配任何小写字母。[A-Z]
匹配任何大写字母。[0-9]
匹配任何数字。
-
组合使用:
[a-zA-Z]
匹配任何字母,无论是大写还是小写。[a-zA-Z0-9]
匹配任何字母或数字。
-
排除特定字符:
[^abc]
匹配除了 ‘a’、‘b’、‘c’ 之外的任何字符。[^0-9]
匹配任何非数字字符。
-
特殊字符:
- 在字符集中,大多数特殊字符如
.
、*
、+
、?
等都失去了它们在正则表达式中的特殊意义,直接作为普通字符来处理。但是,^
和-
在某些情况下具有特殊含义(如上述所示),\
仍然用作转义字符。
- 在字符集中,大多数特殊字符如
-
转义字符:
- 若要在字符集中包含特殊字符(如
]
、-
、^
或\
),需要使用反斜杠\
进行转义。例如,[\]]
匹配一个右方括号。
- 若要在字符集中包含特殊字符(如
-
连续范围:
- 可以在一个字符集中定义多个范围,例如
[a-zA-Z0-9_]
匹配任何字母、数字或下划线。
- 可以在一个字符集中定义多个范围,例如
示例代码
假设我们想要检查一个字符串是否只包含小写字母或数字,可以使用以下Java代码:
import java.util.regex.Pattern;
import java.util.regex.Matcher;public class RegexExample {public static void main(String[] args) {String pattern = "^[a-z0-9]+$";Pattern r = Pattern.compile(pattern);// 测试字符串String testString1 = "hello123";String testString2 = "Hello123";// 创建 matcher 对象Matcher m1 = r.matcher(testString1);Matcher m2 = r.matcher(testString2);if (m1.find()) {System.out.println("testString1: " + testString1 + " 匹配");} else {System.out.println("testString1: " + testString1 + " 不匹配");}if (m2.find()) {System.out.println("testString2: " + testString2 + " 匹配");} else {System.out.println("testString2: " + testString2 + " 不匹配");}}
}
在这个示例中,^[a-z0-9]+$
表示从头到尾整个字符串只能由小写字母或数字组成。如果输入的字符串符合这个条件,则输出“匹配”,否则输出“不匹配”。注意,find()
方法用于查找字符串中是否存在与模式匹配的部分;而如果你想确保整个字符串都符合模式,应该使用 matches()
方法代替。