博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【正则表达式】前瞻,后顾,负前瞻,负后顾
阅读量:5148 次
发布时间:2019-06-13

本文共 643 字,大约阅读时间需要 2 分钟。

举个例子:

有个字符串

str = "博客园 顾客 博客 客园"

我们想匹配字符串里"博客园"的"客"字而不要其他的"客"字,这时就需要用到前瞻后顾。

正则表达式如下:

(?<=博)客(?=园)

反过来,我们不想要"博客园"的"客"字,但是想要其他"客"字。这时就要用到负前瞻,负后顾

正则表达式如下:

(?

 

总结一下:

前瞻: exp1(?=exp2)     查找exp2前面的exp1

后顾:  (?<=exp2)exp1   查找exp2后面的exp1

负前瞻:  exp1(?=exp2)     查找后面不是exp2的exp1

负后顾:  (?<=exp2)exp1   查找前面不是exp2的exp1

 

可以发现,负前瞻、负后顾就是把前瞻、后顾中的"="改成了"!"

注意:后顾功能在大多数语言中有长度限制,只能使用定长的表达式,像\w+和\d 这样的表达式长度可变,不能用在后顾中

 

一个复杂一点的例子:

str = "data: '|12 34 56 78 90|', data: '|12|3456|7890|', data: '|12|', data: '1234567890', data: '|1234|'  "

我们要匹配data后面有||的部分,要求里面没有空格没有|并且长度大于2

(?<=data: ')\|[^ \|]{2,}?\|(?=')

可以匹配到 |1234|

转载于:https://www.cnblogs.com/dplearning/p/5897316.html

你可能感兴趣的文章
常用的HTTP状态码
查看>>
js 数组去重
查看>>
tomcat 启用https协议
查看>>
Most Powerful(ZOJ 3471状压dp)
查看>>
python之函数用法__setattr__
查看>>
tshark的抓包和解析
查看>>
don't set soLinger on NIO socket
查看>>
calibre-ebook
查看>>
Asterisk the Definitive Guide 4th(Asterisk指导手册 第4版)
查看>>
【知识笔记】CSS
查看>>
黄金矿工重制版_给自己的新年礼物_2017
查看>>
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
查看>>
微信开发SDK使用教程--朋友圈评论回复任务
查看>>
2018-2019-1 20165223-20165218 实验四 外设驱动程序设计
查看>>
[apue] dup2的正确打开方式
查看>>
Javascript 常用类型检测
查看>>
分库分表的4个面试连环炮问题!不会就惨了
查看>>
DOM增删改
查看>>
Failed to resolve:com.android.support:appcompat-v7:报错处理
查看>>
后缀自动机(SAM)学习笔记
查看>>