微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式快速入门

正则表达式快速入门

一元字符^,$,.,\w,\s,\b,\d

1.后面四个有相应的大写,表反义。

^:匹配行开头,只有当其在“[]”中表示

2.\b:匹配单词的开始或结束,而“.”匹配除换行符外的任意字符。

eg:^.$:匹配一个非空行;

\bstr:匹配str开头的字符串

二重复*,+,?,{}

请叫上面四位为四大金刚”~

*0个或多个;

+:1个或多个;

?:0个或1个;

{}有三种写法,{n},{n,}和{n,m},不赘述了~

注意:?在四种情况下为懒惰匹配

分别是在*,?,+,{}后面

eg:a.*b,匹配aabab,而a.*b匹配aabab

三“[]”表示字符类,就是里面只能选择其中的一个字符进行匹配

a[\w]c可以匹配akc等;

A[\\w]c可以匹配a\cawcakc

\\w”表示“\”和任意的单词(\w)

高级总结:

也就是说在“[]”内,“.”,“*”,“?”和“{}”都表示本身,没有任何特殊的含义。因为“[]”里面是字符类啊!只能是一个个字符组成!像以上四种都不能惟一确定是一个字符(他们有的是0个或是多个),故在[]内表是本身,无特殊含义。然而,像\w,\d等,只能表示一个字符(如\d表示0~9中的任何一个数字),他们在[]中有着元字符本身的含义,而像前面所说的“四大金刚”都已蜕化成本身了~~

此外,“-”在“[]”中表示字符的范围,如[0-6]表示0~6的任意一个数字。

四转义

一言以蔽之:“四大金刚”,外加一些特殊含义的字符如:^,{,(,\,|等。

因为他们有着特殊的含义,但是如果我就是要匹配他们自身呢?这时就要用到“\”了!

如“\\”匹配字符“\

五分支条件:“|

匹配左侧或是右侧,首先匹配左侧,只有当左侧不匹配时才匹配右侧。

很简单的吧,你应该理解了~~那不举例子了哈

六分组“()

前面都是讲单个字符匹配(0次或多次),那么怎样才能匹配多个字符呢?

佛祖说:孩子,把这些多个字符用括号括起来吧~~

如:(\d{1,3}\.){3}匹配“1~3个数字,并且重复3次”,31.23.432之类的

注意:这里再次说明“[]”与“()”的区别,前者称为字符类,匹配其内的单个字符,侯泽华称为分组,匹配多个字符。前者只匹配[]中的一个!后者要匹配括号中的所有。因此,不能有[\d{3}(ab)?]之类的东西出现。

七反向引用(后向引用)

用于重复搜索前面某个分组匹配的文本(该文本已被捕获,等待后面引用),组的序号或是名字标明,自动分配时按数字来标示,并且从1开始。

如:\b(\w+)\b\s+\1\b可以匹配两个相同的单词的字符串,并且两个单词之间有一个或多个空格,如trytry

也可以自己指定组名(.NETFramework支持

格式:(?<组名>原有基础)或是(?’组名’原有基础)

对于自定义的组名要用\k<组名>来引用。

1\b(\w)(\d)\1\2\b:认命名,可以匹配h1h1,但不能匹配h1d2\1就是代表前面被(\w)捕获的内容

2\b(?<name>\w+)\b\s+\k<name>\b,在.NETFramework支持

八零宽断言

用于查找在某些内容(但并不包括这些内容)之前或之后的东西,再读一遍上面的,我肯定你现在还没弄清楚,要不再读一遍。。。(别打我~

1.(?=exp):零宽度正预测先行断言(死去吧,这么难记住,不记了!算了,记一下吧,以后装逼。。)它断言自身出现的位置的后面能匹配表达式exp,然后整个(?=exp)就是个条件!只有满足这个条件才能进行匹配。

如:Ilikesinginganddancing.\b\w+(?=ing\b)可以匹配singdanc。注意,如果写成\b\w+(?=ing)\b则没有匹配项。

再来理解一遍:(?=ing\b)表示的是在这个表达式的位置处应该是以“ing”结尾的单词。注意的是,整个(?=exp)没有代表任何东西!你要找以“ing”结尾的单词的前半部分,就要用\w+来匹配!

2.(?<=exp)表示自身位置的前面呗~(啥,你说你想知道它的名字。。受不了,它叫。。零宽度正回顾后发断言。。很好记吧)

如:(?<=\bwa)\w+\bI’mwatchingTV!匹配ching

八.5负向零宽度断言

和零宽度断言相对应,如果表示“没有exp”,则进行其前面或后面内容的匹配。

1.(?!exp)\d{3}(?!\d)匹配3个数字(条件是这3个数字后面不能是数字)

2.(?<!exp)\b((?!abc)\w+\b匹配不包含连续字符串abc的单词。

高级总结:八和八.5如何总结呢?

能=‚前面<

ƒ不能!④后面无

另外这四种前面都是以?开头的哦!

考考你,匹配该位置前面不能有数字咋写?

首先:?

其次:“前面”:<

再次:“不能有”:!

因此:....(?<!\d)...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐