come on 正则表达式<4>

打个广告吧,百度一下正则表达式,那个30分钟入门教程写的不赖,,使我对正则感了点兴趣,,然后还有本书,我正看的,不错,《精通正则表达式》。thanks


上一次讲了匹配单个字符时,用到的具有范围性的字符,如:\d等,和具有量词作用的字符*等。

字符组:

量词暂时不提,先说具有范围性的字符。其实,所有的,都可以看作字符数组,格式如:[xxxx],具有的单个字符如s,可以看作[s],数组里只含有一个字符s,.可以看作包含了全部字符的字符数组,\d可以看作包含了1到9的数字。and等等。。记住:匹配单个字符时,都可以使用字符数组来匹配,,匹配多个时,就可以结合量词。

现在是查找字符组内的内容,如果想查找字符组以外的其他字符呢,,可以使用[^x],表示匹配一个不是x字符。[^1234],匹配不是1、2、3、4的字符。为了方便,正则引擎又让\多潜了几个字符。

\D不是数字的字符

\W不是(英语)字的字符

\S不是空白字符的字符

[^123w]不是1或者2或者3或者w的字符

其中字符^,是已经被潜了的字符,在方括号里表示“非”的意思,在下面要介绍的中,表示字符串的开头的位置。


进行位置的查找:

源字符串:abcdefg123woshihaoren_nishidashen

上面说的都是匹配字符,现在说下位置吧。^匹配源字符串第一个字符前面的位置,$匹配源字符串的末尾。

例如:正则表达式^abcd可以得到匹配,而^bcd不行。。dashen$可以匹配,dashe$不可以。^abc$不行,而^abcdefg123woshihaoren_nishidashen$可以。

环视:

如果你想从源字符nishidashen开始匹配,那么需要先找到n这个字符,怎么匹配nishidashen的n呢,,这时需要用到环视了(就是左看看,右看看)。

顺序环视:(?=nishi),即向右(后)看,这个表示的是个位置,这样解释:找到这个位置,它的右边跟着的是nishi这个正则表达式。so满足了吧,全部正则就是(?=nishi)nishidashen

逆序环视:(?<=haoren_),即向左(前)看,解释:找到这个位置,它的左边是haoren_这个正则表达式。全部正则是:(?<=haoren_)nishidashen

友情提示:

我为了记住这个是这么想的:顺序环视的结构是(?=x)想象为(?>=x),把箭头理解为接下来是什么,解释为:先找个位置,这个位置后(右)面是x,,而逆序环视:(?<=x),先找到x,然后它的后面就是需要找的位置。


刚才是找哪个位置后面有什么,如果要找的位置后面不要什么呢,就用否定就行。

(?=x)这样一个位置:后面跟着x

(?<=x)这样一个位置:前面是x

(?!x)这样一个位置:后面不能是x

(?<!x)这样一个位置:前面不能是x


其他的东西。例如(abcd|hhh|235),括号,然后中间有|,表示是或的意思,即匹配abcd或者hhh或者235,在这里,abcd是一个整体,hhh是,235是。。具体的情况自己百度下吧,,真心说不下去了,,有话说不去,有火不敢发,,,,看着自己写的,越来越杂乱无章了。。stop下吧。。


有么有人感觉到我的英语很垃圾。。哇哈哈



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值