元字符 | 说明 |
. | 匹配除 \n 以外的任何字符 |
[ ] | 匹配该字符集合中的一个字符 |
[^] | 排除该字符集合中的一个字符 |
- | 定义一个范围,例如[A-Z] |
\\d | 匹配 0-9 之间的任意数字字符 |
\\D | 匹配非数字字符 |
\\w | 匹配任意字母数字字符(不区分大小写)或下划线字符 |
\\W(大写) | 匹配任意非字母数字字符或下划线字符 |
\\s | 匹配任意空白字符 |
\\S(大写) | 匹配任意非空白字符 |
| | 选择匹配符,匹配“ | ”之前或“ | ”之后的表达式,如:a|b,匹配a或b |
*(贪婪匹配) | 匹配0次或任意多次 |
+(贪婪匹配) | 匹配1次或任意多次 |
?(贪婪匹配) | 匹配0次或1次 |
{n} | 匹配前一个字符(子表达式)至少出现n次 |
{n,} | 匹配前一个字符(子表达式)至少出现n次或更多次 |
{n,m} | 匹配前一个字符(子表达式)至少出现n次,至多出现m次 |
贪婪匹配 | Java的贪婪匹配默认会匹配多的,如果想尽可能的匹配少的就使用懒惰匹配 |
懒惰匹配 | 懒惰匹配的写法是在贪婪匹配的后面加上一个?。例如:*? 、+?、{n,}? |
^ | 指定起始字符 |
$ | 指定结束字符 |
\\b | 匹配单词边界(开头或结尾以及空格) |
\\B | \\b的反义 |
(pattern) | 分组捕获,非命名捕获,匹配 pattern 并捕获该匹配的子表达式。 |
(?<name>pattenn) | 分组捕获,命名捕获,将匹配到的字符串捕获到一个组名称或编号名称中。 |
(?:patten) | 非分组捕获,匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。 如,'industr(?:y|ies)' 是比 ‘industry|industries’ 更经济的表达式。 |
(?=patten) | 非分组捕获,执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。 例如,‘Windows (?=95|98|NT|2000)’ 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。 |
(?!patten) | 非分组捕获,执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。 例如,‘Windows (?!95|98|NT|2000)’ 匹配"Windows 3.1"中的 “Windows”,但不匹配"Windows 2000"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。 |
\\1 | 反向引用,圆括号的内容被捕获以后,可以在这个括号后被使用。 \\1匹配第一个子表达式,\\2匹配第二个子表达式,以此类推。 内部引用使用\\分组号,例如:\\1 , \\2 外部引用使用$分组号,例如: $1 , $2 比如匹配两个连续的数字就可以使用反向引用: (\\d)\\1 |
正则表达式常用元字符:(简单易懂)
于 2022-11-05 21:08:35 首次发布
什么是正则表达式?
简单地说,正则表达式是一些用来匹配和处理文本的字符串。
请注意:语法是正则表达式最容易掌握地部分,真正的挑战在于如何运用语法,
如何把实际问题分解为可由正则表达式解决的子问题。
只靠读书是学不会正则表达式的,实践出真知。
元字符 “ \ ”:
\ 是一个元字符,表示“这个字符有特殊含义,代表的不是字符本身”
\\符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到
转义符号,否则检索不到结果,甚至是会报错的。
在Java的正则表达式中,两个\\代表其他语言中的一个\。
例如 \. 表示匹配.字符本身
注意: 在java的正则表达式中 [.] 中括号中的点就表示匹配点本身