字符 | 示意 |
---|---|
\ | 下一字符特殊转义 |
^ | 匹配开始位置 |
$ | 匹配结束位置 |
* | 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");
}