get started
参考:
匹配字符
字符集 |
描述 |
[abc] |
匹配a,b,c中的任意一个字符 |
[^abc] |
不匹配a,b,c中的所有字符,^ 只有作为第一个字符出现才有效 |
[a-g] |
匹配a-g范围内的任意一个字符 |
[^a-g] |
不匹配a-g中的所有字符 |
[H-N] |
匹配H-N范围内的任意一个字符 |
[0-9] |
匹配0-9范围内的任意一个字符 |
[a-gH-N] |
匹配a-g,H-N范围内的任意一个字符 |
[\u4e00-\u9fa5]
匹配中文字符
通配符: |
|
. |
[^\n\r] ,匹配非换行符 |
\s |
space,空白字符,即换行,制表,空格等字符 |
\S |
[^\s] |
\d |
digit: [0-9] |
\D |
[^\d] |
\w |
word: [0-9A-Za-z_] |
\W |
[^\w] |
基础字符 |
描述 |
\t |
制表符(Tab) |
\r |
回车(Return) |
\n |
换行(NewLine) |
通配符(Java) |
描述 |
\p{ASCII} |
[\x00-\x7F] |
不同操作系统换行符不一样:
Linux: \n
Windows: \r\n
MacOS: \r
主要由于原来打字机,回车和换行是两个不同的动作指令
频次范围
字符频次 |
描述 |
{3} |
前面匹配项出现3次,等价于{3,3} |
{3,6} |
前面的匹配项出现3到6次 |
{3,} |
前面的匹配项至少出现3次 |
{0,6} |
前面的匹配项最多出现6次 |
通配符: |
|
* |
{0,} |
+ |
{1,} |
? |
{0,1} |
\w* |
贪婪模式 |
\w*? |
非贪婪模式 |
匹配组
匹配捕获组 |
描述 |
(a|b) |
匹配a或b并捕获 |
(...) |
捕获组 |
(?:...) |
非捕获组 |
(?<name>...)
(?'name'...) |
命名捕获组,name可以自定义 |
(?(condition)true_regex|false_regex) |
条件匹配 |
group(0)
用于获取整个匹配串的匹配结果,group(>0)
则可以从整个匹配串的结果中获取子捕获组。
注意:java1.7之后才支持命名捕获组(group方法传入字符串name作为参数),js和python暂时还不支持命名捕获组。
定点符(锚点)
定点符 |
描述 |
^ |
字符串开始符 |
$ |
字符串结尾符 |
\b |
boundary,单词边界 |
\B |
非单词边界 |
定点断言 |
向前 |
向后 |
肯定断言 |
(?<=exp) |
(?=exp) |
否定断言 |
(?<!exp) |
(?!exp) |
\b(\w+)\b
等价于(?<=\W?)(\w+)(?=\W?)