`

正则表达式入门

 
阅读更多

通配符:

*         任意长度的任意字符

?       任意一个字符

----------------------------------------------------------------------------

元字符:

\b        英语单词中间的间隔符,代表一个位置,不代表几个字符(可能是若干空格,标点,也可能没东西)

^         断言行首的位置

$         断言行末的位置

.           除了换行符以外的任意长度的任意字符

 

\d          一个数字

\s          一个空白符(空格,Tab,Enter)

\w         一个char(中文,字母,数字,下划线)

PS:查找元字符需要转义,即加在字符前面加一个\

----------------------------------------------------------------------------

限定符:

?         该符号之前的那个符号可能重复若0次或一次

*           该符号之前的那个符号可能重复若干次(可以没有)

+           该符号之前的那个符号可能重复若干次(至少一次)

{n}         该符号之前的那个符号可能重复n次

{n,m}     该符号之前的那个符号可能重复n到m次

----------------------------------------------------------------------------

字符类:

[    ]        代表了一个方括号内枚举到的字符,共有如[abcd]或[a-d]或者[a-de-gf-j]等三种枚举方式

----------------------------------------------------------------------------

分支条件:

 |            该符号前后有两种选择,满足任何一种即可

----------------------------------------------------------------------------

分组:

()      该符号括起来的内容作为一个整体,可以视为一个符号

 

表4.常用分组语法 分类 代码/语法 说明 捕获 零宽断言 注释
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

          此外,[abc]等价于(a|b|c)

----------------------------------------------------------------------------

反义:

表3.常用的反义代码 代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

----------------------------------------------------------------------------

后向引用:

\n          从最前面开始数,第n个()已经匹配到的内容。

 

 ----------------------------------------------------------------------------

零宽断言:

(?=exp)      先行断言:这个括号表达式后面的内容前面必须满足exp,放在需要断言的单元后面

(?<=exp)      后发断言:这个括号表达式前面的内容前面必须满足exp,放在需要断言的单元前面

负向零宽断言:

(?!exp)      先行断言:这个括号表达式后面的内容前面必须不满足exp,放在需要断言的单元后面

 

(?<!exp)      后发断言:这个括号表达式前面的内容前面必须不满足exp,放在需要断言的单元前面

 

 ----------------------------------------------------------------------------

注释:

(?#comment)    表达式中可以插入上述格式的注释

PS:忽略模式中的空白符后,可以直接用#做注释,功能类似//

  ----------------------------------------------------------------------------

贪婪和懒惰

 

 

表5.懒惰限定符 代码/语法 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics