打个广告吧,百度一下正则表达式,那个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$可以。
@H_502_177@环视:
如果你想从源字符nishidashen开始匹配,那么需要先找到n这个字符,怎么匹配nishidashen的n呢,,这时需要用到环视了(就是左看看,右看看)。
顺序环视:(?=nishi),即向右(后)看,这个表示的是个位置,这样解释:找到这个位置,它的右边跟着的是nishi这个正则表达式。so满足了吧,全部正则就是(?=nishi)nishidashen。
@H_502_177@逆序环视:(?<=haoren_)@H_502_177@,即向左(前)看,解释:找到这个位置,它的左边是haoren_这个正则表达式。全部正则是:(?<=haoren_)nishidashen@H_502_177@。
友情提示:
我为了记住这个是这么想的:顺序环视的结构是(?=x),想象为(?>=x),把箭头理解为接下来是什么,解释为:先找个位置,这个位置后(右)面是x,,而逆序环视:(?<=x),先找到x,然后它的后面就是需要找的位置。
刚才是找哪个位置后面有什么,如果要找的位置后面不要什么呢,就用否定就行。
(?=x)这样一个位置:后面跟着x
(?<=x)这样一个位置:前面是x
(?!x)这样一个位置:后面不能是x
(?<!x)这样一个位置:前面不能是x
其他的东西。例如(abcd|hhh|235),括号,然后中间有|,表示是或的意思,即匹配abcd或者hhh或者235,在这里,abcd是一个整体,hhh是,235是。。具体的情况自己百度下吧,,真心说不下去了,,有话说不去,有火不敢发,,,,看着自己写的,越来越杂乱无章了。。stop下吧。。
有么有人感觉到我的英语很垃圾。。哇哈哈
原文链接:https://www.f2er.com/regex/360950.html