| 字符 | 示意 |
|---|---|
| \ | 下一字符特殊转义 |
| ^ | 匹配开始位置 |
| $ | 匹配结束位置 |
| * | 0次或者多次 |
| + | 1次或者多次 |
| ? | 0次或者一次 |
| {n} | 非负数整数,n次 |
| {n,} | 非负数整数,n次及以上 |
| ? | 当此字符在他限定符(*、+、?、{n}、{n,}、{n,m})之后时,尽量匹配较少的字符 |
| (pattern) | 匹配子表达式,如需使用()可以使用\转意 |
| (?:pattern) | 与前字符或匹配,如industr(?:y|ies)等价于’industry|industries’ |
| (?=pattern) | 与前字符连接匹配,如’Windows(?=95|98|NT|2000)’可以匹配Windows95 |
| (?!pattern) | 与前字符非匹配,如’Windows(?=95|98|NT|2000)’不能匹配匹配Windows95 |
| x|y | 或匹配,匹配x或y |
| [xyz] | 字符集,字符中任意一个 |
| [^xyz] | 反向字符集,匹配未包含的任何字符 |
| [a-z] | 字符范围 |
| [^a-z] | 反字符范围 |
| \b | 匹配边界字符,例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er" |
| \B | 匹配非边界字符,例如,"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。 |
| \d | 数字匹配等价于[0-9] |
| \D | 非数字字符匹配。等价于[^0-9] |
| \f | 换页符匹配。等价于\x0c和\cL |
| \n | 换行符匹配。等价于\x0a和\cJ。 |
| \r | 匹配一个回车符。等价于\x0d和\cM |
| \s | 匹配任何空白字符,包括空格、制表符、换页符等。与[\f\n\r\t\v]等价。 |
| \S | 匹配任何非空白字符。与[^\f\n\r\t\v]等价。 |
| \t | 制表符匹配,与\x09和\cI等价 |
| \v | 垂直制表符匹配。与\x0b和\cK等价。 |
| \w | 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等价。 |
| \W | 与任何非单词字符匹配。与"[^A-Za-z0-9_]"等价。 |
| \num | 匹配num,此处的num是一个正整数。到捕获匹配的反向引用。例如,"(.)\1"匹配两个连续的相同字符。 |
| \n | 标识一个八进制转义码或反向引用。如果\n前面至少有n个捕获子表达式,那么n是反向引用。否则,如果n是八进制数(0-7),那么n是八进制转义码。 |
| \nm | 标识一个八进制转义码或反向引用。如果\nm前面至少有nm个捕获子表达式,那么nm是反向引用。如果\nm前面至少有n个捕获,则n是反向引用,后面跟有字符m。如果两种前面的情况都不存在,则\nm匹配八进制值nm,其中n和m是八进制数字(0-7)。 |
| \nml | 当n是八进制数(0-3),m和l是八进制数(0-7)时,匹配八进制转义码nml。 |
| \un | 匹配n,其中n是以四位十六进制数表示的Unicode字符。例如,\u00A9匹配版权符号(©)。 |
常用的相关方法:
//判断是否匹配
Pattern.matches([正则表达式], [文本])
// 按指定模式在字符串查找
String line = "foxhome.top/3000.html?title=hh";
//定义了三个正则表达式匹配组
String pattern = "(\\D*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
if (m.find( )) {
//第一个为全部的匹配结果,其余为正则表达式组结果
System.out.println("value1: " + m.group(0) );
System.out.println("value2: " + m.group(1) );
System.out.println("value3: " + m.group(2) );
System.out.println("value4: " + m.group(3) );
} else {
System.out.println("no match");
}