正则表达式

2020-11-23  本文已影响0人  钟离惜

一、元字符

"^"

匹配行或者字符串的起始位置。
eg:^This匹配This is Regex中的This

"$"

匹配行或者字符串的结束位置。
eg:Regex$匹配This is Regex中的Regex

"\w"

匹配字母,数字,下划线。
eg:\w\w\w匹配This is Regexxxx中的ThiRegexx

"\b"

匹配一个位置,常用于匹配单词边界。
它的前一个字符和后一个字符不全是"\w",除了前后都是"\w"的情况其它都可以。
eg:\bis\b匹配This is Regex中的is

"\d"

匹配数字。
eg:\d\d\d匹配1234567中的123456

"\s"

匹配空格。
eg:\d\d\s\d匹配12 34567中的12 3

"[ad]"

匹配括号内存在的字符,还可以写成"[a-z]"来匹配。

"."

匹配除换行符以外的任何字符,相当于是"\w"和"\s"的组合。

二、反义

"\W"

匹配不是字母,数字,下划线的字符。

"\B"

匹配一个位置,常用于匹配非单词边界。
它的前一个字符和后一个字符全是"\w",即前后都是"\w"的情况。

"\D"

匹配不是数字的字符。

"\S"

匹配不是空格的字符。

"[^ad]"

匹配不存在括号内的字符。

三、量词、懒惰限定符

"*"

重复零次或更多次。
eg:a*匹配aaaaaaaa整个字符串。

"*?"

重复零次或更多次,但尽可能少重复。
eg:a.*?b匹配acbaab中的acbaab

"+"

重复一次或更多次。
eg:a+匹配aaaaaaaa整个字符串。

"+?"

重复一次或更多次,但尽可能少重复。
eg:a.+?b匹配acbaab中的acbaab

"?"

重复零次或一次。
eg:a?匹配aaaaaaaa中的八个a

"{n}"

重复n次。
eg:a{3}匹配aaaaaaaa中的aaaaaa

"{n,m}"

重复n到m次。
eg:a{3,6}匹配aaaaaaaa中的aaaaaa

"{n,m}?"

重复n到m次,但尽可能少重复。
eg:a{3,6}?匹配aaaaaaaa中的aaaaaa

"{n,}"

重复n到更多次。
eg:a{3,}匹配aaaaaaaa中的aaaaaaaa整个字符串。

"{n,}?"

重复n到更多次,但尽可能少重复。
eg:a{3,}?匹配aaaaaaaa中的aaaaaa

四、捕获分组

"(exp)"

匹配exp,并捕获文本到自动命名的分组里。

"(?<name>exp)"

匹配exp,并捕获文本到名称为name的组里。

"(?:exp)"

匹配exp,不捕获匹配的文本,也不给此分组分配组号。

"(?=exp)"

匹配exp前面的位置,如 "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do"。

"(?<=exp)"

匹配exp后面的位置,如 "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing"。

"(?!exp)"

匹配后面跟的不是exp的位置,如 "123abc" 正则 "\d{3}(?!\d)"匹配3位数字后非数字的结果。

"(?<!exp)"

匹配前面不是exp的位置,如 "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<\d)123"。

转载文章
读懂正则表达式就这么简单

上一篇下一篇

猜你喜欢

热点阅读