测试网站:
https://regex101.com/r/xHeJSZ/3/

正则表达式 - (?!), (?:), (?=)
(?:pattern)
非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。
这在使用或字符“(|)”来组合一个模式的各个部分是很有用。
例如“industr(?:y|ies)”就是一个比“industry|industries”
更简略的表达式。
(?=pattern)
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始
处匹配查找字符串,该匹配不需要获取供以后使用。例如,
“Windows(?=95|98|NT|2000)”能匹配“Windows2000”
中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。
预查不消耗字符,也就是说,在一个匹配发生后,在最后一次
匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字
符之后开始。
(?!pattern)
非获取匹配,正向否定预查,在任何不匹配pattern的字符串
开始处匹配查找字符串,该匹配不需要获取供以后使用。例如
“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中
的“Windows”,但不能匹配“Windows2000”中的“Windows”。eg:
正则:in(.*?)(?:(?=stry)|srtddd|\;)
要匹配的字串:indutryd indusrtdd induaa
结果:(indu后面的只匹配不占字符)
Match 1
Full match  0-4 indu
Group 1.    2-4 du   //匹配一
Match 2
Full match  9-19    indusrtddd
Group 1.    11-13   du   //匹配2eg:
正则:indu(.*?)(?:(?=[i])|$)
要匹配的串 : indutryd indusrtdd induaa
Match 1
Full match  0-9 indutryd
Group 1.    4-9 tryd
Match 2
Full match  9-19    indusrtdd
Group 1.    13-19   srtdd
Match 3
Full match  19-25   induaa
Group 1.    23-25   aa

上面有举例!
下面事单个举例注意看FULL Match的区别!

eg:(?:)就等同于indu()yd|indu()tdd|indu()aaindu(.*?)(?:yd|tdd|aa)TEST STRING:
indutryd indusrtdd induaaRESULT:
Match 1
Full match  0-8 indutryd
Group 1.    4-6 tr
Match 2
Full match  9-18    indusrtdd
Group 1.    13-15   sr
Match 3
Full match  19-25   induaa
Group 1.    23-23
eg:indu(.*?)(?=yd|tdd|aa) 正向预查 可以看到fullmatch有区别的
TEST STRING:
indutryd indusrtdd induaaResult:
Match 1
Full match  0-6 indutr
Group 1.    4-6 tr
Match 2
Full match  9-15    indusr
Group 1.    13-15   sr
Match 3
Full match  19-23   indu
Group 1.    23-23   

正则(?=)(?:)相关推荐

  1. python 正则括号的使用及踩坑

    直接先上结论: 若匹配规则里有1个括号------返回的是括号所匹配到的结果, 若匹配规则里有多个括号------返回多个括号分别匹配到的结果, 若匹配规则里没有括号------就返回整条语句所匹配到 ...

  2. php 正则中文匹配

    汉字一定注意是gbk还是utf8编码 UTF-8匹配:在javascript中,要判定字符串是中文是很简朴的.比如:var str = "php编程";if (/^[\u4e00- ...

  3. [JS]正则式的使用示例:替换字符串中所有指定内容

    JS中是没有replaceAll这个api 的,想要替换一个字符串中所有的指定内容,需要用到正则式. 对正则式了解甚少也不要紧,看下面这个demo(一看就会) 现在需要把一个字符串里的所有#号换成空格 ...

  4. python 正则表达质 re.sub() 的使用

    re.sub() 函数的作用: 用于替换字符串中的匹配项 从源码里面看下sub() 函数 里面五个参数pattern, repl, string 是必须要写的  count, flags 是选填的 p ...

  5. MySQL 学习笔记(2)— 通配符/正则表达/运算符

    本文继续对 MySQL 中的通配符过滤.正则表达式.运算符进行分类总结. 1. 通配符 LIKE 指示 MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较,其中分为 % 和 _ 通配符 ...

  6. 正则 不区分大小写_为什么要学正则表达式 7

    在处理正字符串的时候,经常会有一些复杂规则的字符串需求, 正则表表达式就是描述这些规则的公工具. 换句话说. 正则表达式就是记录文本规则的代码. 上期咱们一起学习了正则表达式re模块提供的match( ...

  7. 利用lua中的string.gsub来巧妙实现json中字段的正则替换

    业务需求 工作中需要对某个请求的json响应中的某个字段进行替换, 通常想到的方法是,先使用lua的cjson模块解析该json响应, 取出该json字段再该改写它的值. 在这样实现的过程中,遇到一些 ...

  8. python中的正则替换字符串函数re.sub

    python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例 ...

  9. CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate

    注意到ATS源码目录plugin/experimental/下面有regex_revalidate插件目录,我们在编译时添加--enable-experimental-plugins配置项就可以将其编 ...

  10. 使用ATS中的regex_remap插件实现正则匹配的url重定向

    要点总结如下: 1.正向和反向代理可以同时并存,并且remap可以兼容这两种模式. 2.在使用regex_map时,是借助remap的配置来设置,而且remap.so和regex_remap.so已经 ...

最新文章

  1. 多核之后,CPU 的发展方向是什么?中科院计算所包云岗详细解读
  2. 转]网络上收集的Visual Studio 2008的一些小技巧
  3. noip2010关押罪犯
  4. 关联容器的插入操作简单举例
  5. XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
  6. Selenium2+python自动化28-table定位
  7. 专访蒋彪:JavaEE是企业级开发首选
  8. 基于react-app搭建react-router+redux项目
  9. 169、多数元素(python)
  10. matlab 韦达公式,三次方程的根式求解(通俗版本)
  11. “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)
  12. 基于ESP32制作流光溢彩氛围灯
  13. linux:/ete目录下的重要文件
  14. php ppt如何转换成pdf,PHP将Word,Wps,Excel,PPT转成PDF
  15. 给元素设置鼠标移入后变为手型的属性
  16. APPLE  电脑型号大全
  17. SQL笔试题目分享(一)
  18. python降低图片分辨率怎么调_使用PIL调整图片分辨率
  19. php,ajax -->Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
  20. 生产物流系统建模与仿真-基于WITNESS建模视频教程

热门文章

  1. sin cos 查表法算法解析
  2. AminoCapital:大数据+机械学习引领今年硅谷趋势
  3. IIS配置php+soap
  4. 如何从Windows 10注销其他用户
  5. Idea在Maven项目中使用支付宝沙箱环境
  6. 英特尔k跟kf区别_真实情况透露英特尔10900kf和10900k区别怎么选?评测比较哪款好...
  7. 转:网络模拟利器NEWT的前世今生
  8. android studio 登陆ui界面设计
  9. kinect for windows - 初认识
  10. htons、htonl、ntohl、ntohs的区别与使用