目录
字符
表达式 | 描述 | 例子 |
[abc] | 字符集。匹配集合中所含的任一字符。 | |
[^abc] | 否定字符集。匹配任何不在集合中的字符。 | |
[a-z] | 字符范围。匹配指定范围内的任意字符。 | |
. | 匹配除换行符以外的任何单个字符。 | |
\ | 转义字符。 | |
\w | 匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_] )。 | |
\W | 匹配任何非字母数字(等价于[^A-Za-z0-9_] )。 | |
\d | 数字。匹配任何数字。 | |
\D | 非数字。匹配任何非数字字符。 | |
\s | 空白。匹配任何空白字符,包括空格、制表符等。 | |
\S | 非空白。匹配任何非空白字符。 |
分组和引用
表达式 | 描述 | 例子 |
(expression) | 分组。匹配括号里的整个表达式。 | (abc|bcd|cde),表示这一段是abc、bcd、cde三者之一均可,顺序也必须一致 |
(?:expression) | 非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 | (?:abc)表示找到这样abc这样一组,但不记录,不保存到$变量中,否则可以通过$x取第几个括号所匹配到的项,比如:(aaa)(bbb)(ccc)(?:ddd)(eee),可以用$1获取(aaa)匹配到的内容,而$3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)匹配到的内容,因为前一对括号没有保存变量 |
\num | 对前面所匹配分组的引用。 | 比如(\d)\1 可以匹配两个相同的数字,(Code)(Sheep)\1\2 则可以匹配CodeSheepCodeSheep |
数量
表达式 | 描述 | 例子 |
? | 匹配前面的表达式0个或1个。即表示可选项。 | (abc)?$ |
+ | 匹配前面的表达式至少1个。 | (abc)+\\w{2,}$ |
* | 匹配前面的表达式0个或多个。 | (abc)*\\w{2,}$ |
| | 或运算符。并集,可以匹配符号前后的表达式。 | (0|1|2) |
{m} | 匹配前面的表达式m个。 | |
{m,} | 匹配前面的表达式最少m个。 | |
{m,n} | 匹配前面的表达式最少m个,最多n个。 |
锚点/边界
表达式 | 描述 | 例子 |
^ | 匹配字符串或行开头。 | |
$ | 匹配字符串或行结尾。 | |
\b | 匹配单词边界。 | 比如Sheep\b 可以匹配CodeSheep 末尾的Sheep ,不能匹配CodeSheepCode 中的Sheep |
\B | 匹配非单词边界。 | 比如Code\B 可以匹配HelloCodeSheep 中的Code ,不能匹配HelloCode 中的Code 。 |
预查断言
表达式 | 描述 | 例子 |
(?=) | 正向预查。 | Code(?=Sheep) 能匹配CodeSheep 中的Code ,但不能匹配CodePig 中的Code 。 |
(?!) | 正向否定预查。 | Code(?!Sheep) 不能匹配CodeSheep 中的Code ,但能匹配CodePig 中的Code 。 |
(?<=) | 反向预查。 | (?<=Code)Sheep 能匹配CodeSheep 中的Sheep ,但不能匹配ReadSheep 中的Sheep 。 |
(?<!) | 反向否定预查。 | (?<!Code)Sheep 不能匹配CodeSheep 中的Sheep ,但能匹配ReadSheep 中的Sheep 。 |
特色标志
表达式 | 描述 | 例子 |
(?i) | 忽略大小写。 | (?i)abc:表示abc不区分大大小写 a(?i)bc:表示bc不区分大小写 a((?i)b)c:表示b不区分大小写 |
/.../g | 全局匹配。 | java程序中可使用Matcher.find()方法 |
/.../m | 多行修饰符。用于多行匹配。 | 在java程序中,创建匹配器的时候可以设置匹配模式。 String test = "adw\nfseabdff"; Pattern p = Pattern.compile("^.*abd.*$", Pattern.MULTILINE); System.out.println(p.matcher(test).find()); |