其他分享
首页 > 其他分享> > 正则表达式+环视解析(最清晰解析)

正则表达式+环视解析(最清晰解析)

作者:互联网

很多文章,把环视(又叫零宽断言,或者预搜索,随你怎么叫啦),解释的云里雾里的,看他们的图示,

这里,他们其实是默认你已经知道了用法(这种教程,是他们自己知道,也认为你也知道了),这种解析都是搅合浆糊的, 大多数人,应该是,看了一遍后,该不会!还是不会的!除非,你看了一遍又一遍,才明白过来,要不是他们这些,你可能早就会了,错误引导了你的思维,好多人明白后,会气得xxx,这时要(注意修为),原因:它(教程这),这里少写了一个东西,藏着呢!

我来解析吧,

        数据_表达式           环视子表达式     或者 |     环视子表达式     数据_表达式 
        data_exp               (?=sub_exp)           |   (?<=sub_exp)  data_exp   

(这里的data_exp ,非常重要,!!!

是你能,很快明白环视的关键,而大多数环视解释文章,把它当空气,释放了,这个一定得带上,看完,你就明白我说的了,环视其实很简单,是那些,文章把你弄迷糊了)

这里的2行

 数据_表达式 和 环视子表达式 ,之间的 空格是 不存在的, 之所以,这两样写 ,为了清晰而已,

明白他们之间的位置关系,

而是非之分,就是 在?或者< ,后面+ 个 !,

举例:

(?<=m)data_exp 匹配前面是m的数据,若data_exp 是mABC就匹配,若是aABC不匹配,是 ABC也都不能匹配,就是这一 data_exp 前面必须有个m,这个(?<=m)就是预订的位置,但并不占位(零宽度的由来),而数据_表达式,data_exp(这里是ABC),才是最终的正则要得到的数据!好了,我好像已经把该讲的都讲完了。 

剩下的,就是实例了,邮编例子:

邮编6位(china的)

邮编的前面不能有数字,否则那就不是6位了,那先给个邮编的data_exp,   \d{5},可以吧,不行,0 不能打头,只能是1-9,好办,那就 [1-9]{5}

再给它+个前缀(前面不能有数字),(?

同理后面也不能有数字,(?!\d),注意,后面,就不能用<了,合起来,就是

(?

写正则的环视总结:

        1  先写 数据表达式

        2  确定 环视子表达式 是在前面 还是在后面,前面 加 <  ,非 加  !

        3  注意环视子表达式  ,不占宽度!不匹配文本内容

        4  环视和分组都有 ( )  

标签:匹配,正则表达式,环视,邮编,exp,解析,data,表达式
来源: https://blog.csdn.net/liuyuan790/article/details/118245937