正则表达式

\ :转义字符

^ :匹配字符串开始位置

$  :匹配字符串结束位置

.  :点,匹配除\r\n之外的任何单个字符

* :匹配前面字符或子表达式任意次

? :匹配前面字符或子表达式0次或1次

+:匹配前面字符或子表达式1次或多次

\r:回车,\n换行,\t制表符,\v垂直制表符,\f:换页符

\d:匹配数字字符,等价[0-9]

\D:匹配非数字字符,等价[^0-9]

\s:匹配不可见字符,如空格,制表符,换页符等价[\r\n\\t\v\f]

\S:匹配可见字符,等价[^\r\n\t\v\f]

\w:匹配带下划线的单词字符,类似但不等价与[a-zA-Z0-9_],单词字符unicode字符集

\W:匹配非单词字符,等价于[^a-zA-Z0-9_]

{n}:确定匹配n次

{n,}:匹配至少n次

{n,m}:匹配至少n次,最多m次,n<=m

 

[xyz]:字符集合,匹配包含中括号中的任意一个字符

[^xyz]:负值字符集合,匹配未包含的任意一串字符。 [^abc] 可以匹配plain中的plin

[a-z]:字符范围,匹配指定范围的任意字符,应该是一个或一串字符

[^a-z]:负值字符范围,匹配不在指定范围的任意字符,应该也是一个活一串字符

 

\b:匹配单词边界,单词和空格键的位置。 er\b 可以匹配never中的er,不能匹配verb中的er

\B:匹配非单词边界,er\B能匹配verb中的er,不能匹配never中er

 

(pattern)获取匹配,获取的结果可以在Matches集合中得到

(?:pattern)非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用 industr(?:y|ies)为industry|industries缩略写法

 正向预查

(?=pattern)非获取匹配,正向肯定预查,在任何匹配pattern字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。

(?!pattern)非获取匹配,正向否定预查,在任何不匹配pattern字符串处开始处匹配查找字符串,该匹配不需要获取供以后使用。

        子模式内部 前面加“?=”,表示的意思是:首先,要匹配的文本必须满足此子模式前面的表达式(本例,“Windows ”);其次,此子模式不参与匹配。

Text:
Windows 1.03 and Windows 2.0 fisrt Released in 1985 and 1987 respectively.
Windows 95 and Windows 98 are the successor.
Then Windows 2000 and Windows Xp appeared.
Windows Vista is the Latest version of the family.

RegEx:
Windows( ?=[\d.]+\b)

 

Result:(带下划线的为成功匹配的)
Windows 1.03 and Windows 2.0 fisrt Released in 1985 and 1987 respectively.
Windows 95 and Windows 98 are the successor.
Then Windows 2000 and Windows Xp appeared.
Windows Vista is the Latest version of the family.

 

 反向预查

(?<=pattern)非获取匹配,反向肯定预查,与正向肯定预查类似,方向相反。

(?<!pattern)非获取匹配,反向否定预查,与正向否定预查类似,方向相反。

      在子模式内部前面加“?<=”,表示的意思是:首先,要匹配的文本必须满足此子模式 后面 的表达式(本例,“\d+.\d+”);其次,此子模式不参与匹配。

Text:
CNY: 128.04
USD: 22.5
USD: 23.5
HKD: 1533.5
CNY: 23.78
Page 39 of 42
RegEx:
(?<=CNY: )\d+\.\d+
Result:
CNY: 128.04 

USD: 22.5 

USD: 23.5 

HKD: 1533.5 

CNY: 23.78

posted on 2017-03-22 14:23  zjone391  阅读(110)  评论(0编辑  收藏  举报