专业的编程技术博客社区

网站首页 > 博客文章 正文

正则表达式lookahead或lookbehind了解了,写代码就不用捉急了

baijin 2024-09-12 11:01:18 博客文章 7 ℃ 0 评论

正则表达式,用于处理文本的工具,由于其简洁、高效、强大所以被包括进了各种计算机语言的基础库当中。通常情况下,我们了解最基本的模式,就已经够用了,比如代表空白用\s、非空白\S等。如果有不了解的,可以从金色数据平台用户手册_正则表达式入门去了解。

但也有一种情况也经常出现,当要求某个字符串不得含有某个词汇时,则可能需要你对正则表达式要进一步理解才能完成这项任务。在这里就是我接下来要说的lookahead/lookbehind模式,也叫断言模式。

lookahead模式

又分正向和负向查找朝前匹配,分别如下:

正向查找朝前匹配 :

格式:

x(?=y)

此代表只有当y跟随在x后面时,才匹配x。

举例来说,/玩(?=球)/,则只有将“玩”后面跟着“球”字才匹配:

负向查找朝前匹配 :

格式

x(?!y)

此代表只有当y不跟随在x后面时,才匹配x。

举例来说,/玩(?!球)/,则只有将“玩”后面不跟着“球”字才匹配:

lookbehind模式

又分正向和负向查找朝后匹配,分别如下:

正向查找朝后匹配 :

格式:

(?<=y)x

此代表只有当x前面有y时,才匹配x。

举例来说,/(?<=冬)瓜/,则只有将“瓜”前面有“冬”字才匹配:

负向查找朝后匹配 :

格式:

(?<!y)x

此代表只有当x前面没有y时,才匹配x。

举例来说,/(?<!冬)瓜/,则只有将“瓜”前面没有“冬”字才匹配:

不包含某几个词汇的匹配

回到前面所提到的问题,我们可以通过如下去完成这个任务:

/*查找不包括beijing和shanghai的URL地址*/
var urls='https://www.asite.com/beijing-weather.aspx\n' +
 'https://www.asite.com/tianji-weather.aspx'
/https\:\/\/www\.asite\.com\/(?!.*beijing|.*shanghai).*\-weather\.aspx/.exec(urls)

金色数据

在金色数据平台配制规则时,URL正则匹配时文本框背景会提示成绿色,否则成白色,如下图所示:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表