符号 | 描述 | 示例 | 解释 |
---|---|---|---|
[] |
可接收的字符列表 | [efgh] |
匹配e、f、g、h中的任意1个字符 |
[^] |
不接收的字符列表 | [^abc] |
除了a、b、c以外的任意1个字符,包括数字和特殊符号 |
- |
连续字符 | A-Z |
任意一个大写字母 |
. |
匹配除\n 以外的任何字符 |
a..b |
以a开头,b结尾,中间有两个任意字符,长度为4的字符串(aaab,asdb,a*+b) |
\\d |
匹配单个数字字符,相当于[0-9]
|
\\d{3(\\d)? |
包含3个或4个数字的字符串(123,4528) |
\\D |
匹配单个非数字字符,相当于[^0-9]
|
\\D(\\d*) |
非数字开头,之后任意个数字字符串(a,A528) |
\\w |
匹配单个数字、大小写字母、下划线的字符,相当于[0-9a-zA-Z]
|
\\d{3}\\w{4} |
3个数字开头长度为7的数字字母字符串(235ads5,123412a) |
\\W |
匹配单个非数字、大小写字母、下划线的字符,相当于[^0-9a-zA-Z]
|
\\W+\\d{2} |
一个非数字字母开头,2个数字结尾的字符串(#35,$%dassd25) |
\\s |
匹配任何空白字符(空格、制表符等) | ||
\\S |
匹配任何非空白字符 |
大小写
Java正则表达式默认是区分字母大小写的,(?i)
表示编译标记。
下面几个示例实现不区分大小写:
-
(?i)abc
:表示abc都不区分大小写 -
a(?i)bc
:表示bc不区分大小写 -
a((?i)b)c
:表示b不区分大小写 -
Pattern.CASE_INSENSITIVE
:不区分大小写
public static void main(String[] args) {
String content = "a11c8abcABC _";
// 匹配任意一个小写字母
String regex1 = "[a-z]";
// 匹配任意一个大写字母
String regex2 = "[A-Z]";
// 匹配小写abc,必须是abc连起来才能匹配上
String regex3 = "abc";
// 匹配不区分大小写abc
Pattern pattern1 = Pattern.compile(regex3, Pattern.CASE_INSENSITIVE);
// 匹配不区分大小写abc
String regex4 = "(?i)abc";
// 匹配数字
String regex5 = "[0-9]";
String regex6 = "\\d";
// 匹配除小写字母其他所有字符
String regex7 = "[^a-z]";
// 匹配abcd中任意一个字符
String regex8 = "[abcd]";
// 匹配数字、字母、下划线中任意一个字符
String regex9 = "\\w";
// 匹配空格、制表符
String regex10 = "\\s";
// 匹配除\n以外的所有字符,匹配.本身的话使用\\.
String regex = ".";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("截取到的字符串:" + matcher.group(0));
}
}