正则(?=)(?:)
测试网站:
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
正则(?=)(?:)相关推荐
- python 正则括号的使用及踩坑
直接先上结论: 若匹配规则里有1个括号------返回的是括号所匹配到的结果, 若匹配规则里有多个括号------返回多个括号分别匹配到的结果, 若匹配规则里没有括号------就返回整条语句所匹配到 ...
- php 正则中文匹配
汉字一定注意是gbk还是utf8编码 UTF-8匹配:在javascript中,要判定字符串是中文是很简朴的.比如:var str = "php编程";if (/^[\u4e00- ...
- [JS]正则式的使用示例:替换字符串中所有指定内容
JS中是没有replaceAll这个api 的,想要替换一个字符串中所有的指定内容,需要用到正则式. 对正则式了解甚少也不要紧,看下面这个demo(一看就会) 现在需要把一个字符串里的所有#号换成空格 ...
- python 正则表达质 re.sub() 的使用
re.sub() 函数的作用: 用于替换字符串中的匹配项 从源码里面看下sub() 函数 里面五个参数pattern, repl, string 是必须要写的 count, flags 是选填的 p ...
- MySQL 学习笔记(2)— 通配符/正则表达/运算符
本文继续对 MySQL 中的通配符过滤.正则表达式.运算符进行分类总结. 1. 通配符 LIKE 指示 MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较,其中分为 % 和 _ 通配符 ...
- 正则 不区分大小写_为什么要学正则表达式 7
在处理正字符串的时候,经常会有一些复杂规则的字符串需求, 正则表表达式就是描述这些规则的公工具. 换句话说. 正则表达式就是记录文本规则的代码. 上期咱们一起学习了正则表达式re模块提供的match( ...
- 利用lua中的string.gsub来巧妙实现json中字段的正则替换
业务需求 工作中需要对某个请求的json响应中的某个字段进行替换, 通常想到的方法是,先使用lua的cjson模块解析该json响应, 取出该json字段再该改写它的值. 在这样实现的过程中,遇到一些 ...
- python中的正则替换字符串函数re.sub
python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例 ...
- CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate
注意到ATS源码目录plugin/experimental/下面有regex_revalidate插件目录,我们在编译时添加--enable-experimental-plugins配置项就可以将其编 ...
- 使用ATS中的regex_remap插件实现正则匹配的url重定向
要点总结如下: 1.正向和反向代理可以同时并存,并且remap可以兼容这两种模式. 2.在使用regex_map时,是借助remap的配置来设置,而且remap.so和regex_remap.so已经 ...
最新文章
- 多核之后,CPU 的发展方向是什么?中科院计算所包云岗详细解读
- 转]网络上收集的Visual Studio 2008的一些小技巧
- noip2010关押罪犯
- 关联容器的插入操作简单举例
- XMLHttpRequest+WebForm模式(接口IHttpHandler)实现ajax
- Selenium2+python自动化28-table定位
- 专访蒋彪:JavaEE是企业级开发首选
- 基于react-app搭建react-router+redux项目
- 169、多数元素(python)
- matlab 韦达公式,三次方程的根式求解(通俗版本)
- “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)
- 基于ESP32制作流光溢彩氛围灯
- linux:/ete目录下的重要文件
- php ppt如何转换成pdf,PHP将Word,Wps,Excel,PPT转成PDF
- 给元素设置鼠标移入后变为手型的属性
- APPLE 电脑型号大全
- SQL笔试题目分享(一)
- python降低图片分辨率怎么调_使用PIL调整图片分辨率
- php,ajax -->Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)
- 生产物流系统建模与仿真-基于WITNESS建模视频教程