美文网首页程序员
正则表达式之零宽断言

正则表达式之零宽断言

作者: 似水牛年 | 来源:发表于2018-06-26 11:17 被阅读0次

最近的项目用到了文件模板和输入占位符,想要在模板文件中插入给用户输入的占位符;每次修改模板中的输入占位符都是control+F进行搜索,很费眼,而且效率低容易出错;所以希望用正则的方式,匹配出模板中的占位符;

模板中的占位符前后有固定的字符串格式

<!--{$field_name}--> 

而且我只想截取里面的field_name,所以用到了零宽断言,这里记录一下:

零宽断言
用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。最好还是拿例子来说明吧: 断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。

  • (?=exp) 也叫零宽度正预测先行断言 它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。

  • (?<=exp) 也叫零宽度正回顾后发断言 它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。

最后,归回到我项目中的需求,这两种断言要一起使用才能满足我的需求:

字段占位符规则:<!--{$field_name}--> 
匹配字段的正则表达式:(?<=<!--{\$)(.*?)(?=}–>)
说明:
(?<=<!--{\$) 匹配前面filed_name前面的占位符  <!--{$
(?=}–>) 匹配filed_name后面的占位符 }-->

更多关于正则表达式的内容,请移步 ↓
https://deerchao.net/tutorials/regex/regex.htm

相关文章

  • Java学习笔记 - 第026天

    每日要点 正则表达式 例子1:零宽正向先行断言、零宽负向先行断言、零宽正向后行断言、零宽负向后行断言 异常 自定义...

  • CocosCreator3.x开发笔记8: Invalid re

    在iOS下运行报错,是因为正则不支持 因为ios不支持零宽断言 什么是零宽断言? 粗略总结:零宽断言是正则表达式中...

  • 浅谈正则表达式(中)

    本节我们继续接着浅谈正则表达式(上)来讲正则表达式的其他使用。 零宽断言 断言:俗话的断言就是“我断定什么什么”,...

  • 正则表达式 学习

    参考:正则表达式30分钟入门教程 元字符 字符转义 分枝条件 分组 向后引用 零宽断言 负向零宽断言 贪婪和懒惰 ...

  • 正则表达式的先行断言(lookahead)和后行断言(lookb

    正则表达式的先行断言和后行断言一共有4种形式:(?=pattern) 零宽正向先行断言(zero-width po...

  • 正则表达式之零宽断言

    最近的项目用到了文件模板和输入占位符,想要在模板文件中插入给用户输入的占位符;每次修改模板中的输入占位符都是con...

  • 零宽断言

    零宽度正预测先行断言 格式:(? = exp )解释: ? 是待处理的字符串 ?后面能匹配表达式 例子? 表达...

  • 零宽断言

    今天我们来讲一下正则 零宽断言还有其他的名称,例如"环视"或者"预搜索","预查" 等等 作用: 作用是给指定位置...

  • 正则表达式-零宽断言

    零宽 零宽说的是这个表达式不匹配任何字符,只匹配一个位置 断言 我要匹配的字符串一定要满足这个条件 一下采用pyt...

  • 正则表达式零宽断言

    在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。...

网友评论

    本文标题:正则表达式之零宽断言

    本文链接:https://www.haomeiwen.com/subject/nbjneftx.html