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并捕获
(...) 捕获组
(?:...) 非捕获组
(?<­nam­e>...)­
(?­'na­me'...)
命名捕获组,­nam­e可以自定义
(?(con­dit­ion­)tr­ue_­reg­ex|­fal­se_­regex) 条件匹配

group(­0)用­于获取­整个匹­配串的­匹配结­果,g­rou­p(>­0)则­可以从­整个匹­配串的­结果中­获取子捕获组。
注意:jav­a1.7­之后­才支持­命名捕­获组(­gro­up方­法传入­字符串­nam­e作为­参数)­,js­和py­tho­n暂时­还不支­持命名捕获组。

定点符(锚点)

定点符 描述
^ 字符串开始符
$ 字符串结尾符
\b bounda­ry,单词边界
\B 非单词边界
定点断言 向前 向后
肯定断言 (?<­­=exp) (?=exp)
否定断言 (?<­­!exp) (?!exp)

\b(\w+­)\b­等价于­(?<­=\W­?)(­\w+­)(?­=\W?)