js正则之零宽断言
我们学到的正则表达式匹配,都是有“宽度”的,使用 \w+。
匹配下面文本,会将 。
一同匹配:
regular。
expression。
如果不想匹配符号,只匹配一个位置,就要用到“零宽断言”(匹配宽度为零,满足一定的 条件/断言),零宽断言使用 (?=表达式) 的语法,例如 \w+(?=。)
,其中 (?=。)
表示 。
前面的位置(先行断言)
regular。
expression。
如果需要匹配后面的位置,如:
。regular
。expression
则要用到后发断言 (?<=。)
,使用 (?<=。)\w+
得到上面的匹配结果
使用 (?<=<b>).*(?=</b>)
匹配标签中的内容
<b>粗体</b>
负向零宽断言
负向零宽断言 (?!表达式) 也是匹配一个零宽度的位置,不过这个位置的“断言”取表达式的反值,例如 (?!表达式)
表示 表达式
前面的位置,如果 表达式
不成立 ,匹配这个位置;如果 表达式
成立,则不匹配:
expression
expression,
expression;
expression。
以上为使用 .+n(?!。)
的匹配结果。注意与 .+n[^。]
匹配的区别
expression
expression,
expression;
expression。
同样,负向零宽断言也有“先行”和“后发”两种,负向零宽后发断言为 (?<!表达式)
使用 (?<![</])para(?!>)
匹配下面文本
<para>para表示一个段落</para>
(?<![</])
表示para
左边不能为<
或/
;(?!>)
表示para
右边不能为>
js正则之零宽断言的更多相关文章
- js正则:零宽断言
JavaScript正则表达式零宽断言 var str="abnsdfZL1234nvcncZL123456kjlvjkl"var reg=/ZL(\d{4}|\d{6})(?!\ ...
- JS不支持正则中的负向零宽断言
今天在项目中用到了正则表达式,并且需要用负向零宽断言 (?<=exp) 进行筛选,结果运行时报 Invalid group 错,一开始以为是自己很久没用表达式写错了,查阅了一下正则语法后发现并没 ...
- Regex 正则零宽断言
http://baike.baidu.com/link?url=sLfovpZmIcS5Uz_tiidXoVtjl30Tu3wARMfhnEcbgEGzsb8g1z7dvtGNXTulu1KDodmi ...
- 正则 ?<= 和 ?= 用法 以及零宽断言等概念
正则 ?<= 和 ?= 用法 参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwW ...
- grep正则表达的零宽断言
先看一组神奇的命令 [root@elastix82 tmp]# echo $html111<td>aaa</td>222[root@elastix82 tmp]# [root@ ...
- Python-正则零宽断言及命名捕获(类PHP)
(一)零宽断言 说明:本文的例子使用python描述 首先说明一下什么是零宽断言,所谓零宽断言就是并不去真正的匹配字符串文本,而仅仅是匹配对应的位置. 正则表达式中有很多这样的断言 ...
- 正则表达式零宽断言详解(?=,?<=,?!,?<!)
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了 正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以重点从匹配原理方面进行分析.零 ...
- 零宽断言 -- Lookahead/Lookahead Positive/Negative
http://www.vaikan.com/regular-expression-to-match-string-not-containing-a-word/ 经常我们会遇到想找出不包含某个字符串的文 ...
- $python正则表达式系列(5)——零宽断言
本文主要总结了python正则零宽断言(zero-length-assertion)的一些常用用法. 1. 什么是零宽断言 有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面 ...
随机推荐
- 括号匹配(C++ Stack)
最近在学习C++,所以使用stack容器来实现括号匹配 /**********************************************************/ stack<Ty ...
- TransactionScope的使用
本文导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我们所希望的是能够在整个这个方法定义为一个事务,TransactionSco ...
- 调试minix内核
调试的时候,要把电脑当作单片机来使用,故先需要添加串口,方便进行打印调试 http://wiki.minix3.org/doku.php?id=developersguide:serialout 1. ...
- js获取页面的来源页
<html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat=&quo ...
- SQL 优化案例 1
create or replace procedure SP_GET_NEWEST_CAPTCHA( v_ACCOUNT_ID in VARCHAR2, --接收短信的手机号 v_Tail_num i ...
- ListView控件的Insert、Edit和Delete功能第三部分(自我总结)
1.刚开始在第一部分显示数据的时候出现如下错误: 修改: @Page 中的EnableEventValidation="false" 2.点击各个按钮没有反应. 修改:为page_ ...
- Tab选项卡的原生写法
关键点:建立点击事件和显示事件的连接,即点li 1让对应的div1出来,很容易想到遍历.索引 ;;} ul,li{list-style: none;} .tab{background: rgba(2, ...
- java中json数据生成和解析(复杂对象演示)
1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...
- Tree Cutting
Tree Cutting Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others) Prob ...
- TextureView+SurfaceTexture+OpenGL ES来播放视频(一)
引自:http://www.ithao123.cn/content-8733143.html 最近发现视频直播类应用层出不穷,比如233手游直播,蓝鲸直播,微录客等等什么的,连android界大神老罗 ...