Regex 正则零宽断言
http://baike.baidu.com/link?url=sLfovpZmIcS5Uz_tiidXoVtjl30Tu3wARMfhnEcbgEGzsb8g1z7dvtGNXTulu1KDodmiuTAP5ODr_R5D2myeeq
零宽断言
1_1、(?=exp) 零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp
1_2、(?<=exp) 零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
负向零宽
2_1、(?!exp)零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp
2_2、(?<!exp)零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp
举例1
1_1,1_2: (?<=(aa|bb)).+?(?=ing) 匹配以aa或bb开头,ing结束之间的字符
aabbingxxing
匹配结果: 1.bb 2.ingxx
第一次从aabbing匹配出bb,当前匹配到字符串第四个位置,剩下的字符串是ingxxing,
由于(?<=exp)不占宽度,ingxxing前面是bb,连起来就是bbingxxing,所以匹配出ingxx
(注: 以上解释只是个人根据结果推测出来的,说法可能不一定准确,但结果经过测试是正确的,只是方便理解,
aabb1ingxxing 通过这个正则匹配出来的结果是:bb1)
举例2:
2_1,2_2 : (?<!(a1|b2))\\d{1,}?(?!ing)
a1b2ingxxing a844ing cc66dd只有3被过滤掉了,3前面是b2后面是ing
匹配结果: 1,2, 8,4,6,6
Regex titleRegex3 = new Regex("(?<!(a1|b2))\\w{2,}?(?!ing)" );
String strong3 = "a1b23ingxxinga844ingcc66dd";
MatchCollection mcs3 = titleRegex3.Matches(strong3);
for (int i = 0; i < mcs3.Count; i++)
{
Console.WriteLine(i + "---" + mcs3[i].Value);
}
匹配结果
0---a1, 1---23i, 2---ng, 3---xxi, 4---ng, 5---a8,
6---44i, 7---ng, 8---cc, 9---66, 10---dd
递归匹配:
匹配所有div及div中有嵌套的div
<div[^>]*>
[^<>]*
( (
(?'Open'<div[^>]*>)
[^<>]*
)+
(
(?'-Open'</div>)
[^<>]*
)+
)*
(?(Open)(?!))
</div>
能匹配出
<div>aa</div>
<div>aa <div> bb <div>cc</div></div></div>
div中包含其他标签的不能匹配出来,如<div>aa<span>bb</span></div>
Regex 正则零宽断言的更多相关文章
- $python正则表达式系列(5)——零宽断言
本文主要总结了python正则零宽断言(zero-length-assertion)的一些常用用法. 1. 什么是零宽断言 有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面 ...
- JS不支持正则中的负向零宽断言
今天在项目中用到了正则表达式,并且需要用负向零宽断言 (?<=exp) 进行筛选,结果运行时报 Invalid group 错,一开始以为是自己很久没用表达式写错了,查阅了一下正则语法后发现并没 ...
- 正则 ?<= 和 ?= 用法 以及零宽断言等概念
正则 ?<= 和 ?= 用法 参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwW ...
- js正则:零宽断言
JavaScript正则表达式零宽断言 var str="abnsdfZL1234nvcncZL123456kjlvjkl"var reg=/ZL(\d{4}|\d{6})(?!\ ...
- js正则之零宽断言
我们学到的正则表达式匹配,都是有“宽度”的,使用 \w+. 匹配下面文本,会将 . 一同匹配: regular. expression. 如果不想匹配符号,只匹配一个位置,就要用到“零宽断言”(匹配宽 ...
- grep正则表达的零宽断言
先看一组神奇的命令 [root@elastix82 tmp]# echo $html111<td>aaa</td>222[root@elastix82 tmp]# [root@ ...
- 正则表达式零宽断言详解(?=,?<=,?!,?<!)
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了 正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以重点从匹配原理方面进行分析.零 ...
- 零宽断言 -- Lookahead/Lookahead Positive/Negative
http://www.vaikan.com/regular-expression-to-match-string-not-containing-a-word/ 经常我们会遇到想找出不包含某个字符串的文 ...
- Python爬虫学习(4): python中re模块中的向后引用以及零宽断言
使用小括号的时候,还有很多特定用途的语法.下面列出了最常用的一些: 表4.常用分组语法 分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>e ...
随机推荐
- LOJ 2997 「THUSCH 2017」巧克力——思路+随机化+斯坦纳树
题目:https://loj.ac/problem/2977 想到斯坦纳树.但以为只能做 “包含一些点” 而不是 “包含一些颜色” .而且不太会处理中位数. 其实 “包含一些颜色” 用斯坦纳树做也和普 ...
- 一片关于Bootstarp4的文章
一.Bootstarp Bootstrap 是全球最受欢迎的前端组件库,用于开发响应式布局.移动设备优先的 WEB 项目.可以让你快速的排版,不用在写那些繁杂的样式.Bootstrap是开源免费的,设 ...
- python,mock-server之moco
python,mock-server之moco1.mock使用:mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口,此时服务端没开发完成,或者说没搭建测 ...
- git开发实战:问题解决
git作为一个高效的开发协作工具,其版本管理和分支管理是其高效管理代码的体现.但是我们在平时开发中,往往要一边修着bug一边做着新功能,这样有可能就会遇到以下几种场景 1.改完bug忘记切换分支了,代 ...
- Html5 学习笔记 --》布局
不推荐: 浮动布局: footer 设置 clear : both 清理浮动 | header | |边 | | |内 | 内容 ...
- T1215:迷宫
[题目描述] 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Extense处在某 ...
- Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.s ...
- 点击td对同行的其他td进行操作
假设有这样的一段tr: <tr> <td><input type="checkbox" name="item" class=&qu ...
- java 线程安全并发Queue
并发Queue 在并发的队列上jdk提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论在那种都继承自Qu ...
- elasticsearch Java High Level REST 相关操作封装
pox.xml文件添加以下内容 <dependency> <groupId>org.elasticsearch.client</groupId> <artif ...