加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式前瞻(?=)、后顾(?<)、负前缀(?!)、负后顾(?<!)

发布时间:2020-12-14 05:35:07 所属栏目:百科 来源:网络整理
导读:正则表达式前瞻(?=)、后顾(?)、负前缀(?!)、负后顾(?!) 正则表达式前瞻、后顾这几个概念好像比较少会碰到,但是对于解决一些特定的匹配问题有非常重要的作用。 这几个概念的英文是 Lookahead and Lookbehind Zero-Length Assertions ,完整的中文名应该是前

正则表达式前瞻(?=)、后顾(?<)、负前缀(?!)、负后顾(?<!)

正则表达式前瞻、后顾这几个概念好像比较少会碰到,但是对于解决一些特定的匹配问题有非常重要的作用。

这几个概念的英文是 Lookahead and Lookbehind Zero-Length Assertions ,完整的中文名应该是前瞻后顾零宽断言。它匹配一些字符,但是并不包含匹配模式,只是确定是否匹配,也就是所谓的零宽。

前瞻 Lookahead 使用 ?=q(?=u) ,表示 u 前面是 q ,也就是 q 后面跟 u,但匹配结果中不包含 u (零宽)。

同理,后顾 Lookbehind 使用 ?<(?<q)u 表示 q 后面是 u,也就是 u 前面为 q , 但匹配结果不包含 q (零宽)。

而这两个方式的相反匹配,负前瞻 q(?!u) 和负后顾 (?<!q)u ,分别表示 不为 u 的前面是 q不为 q 的后面是 u

下面是一下例子:

abc(?=123)      abc123      匹配,abc
                123abc      不匹配
abc(?!123)      abc123      不匹配
                abc456      匹配,abc
                def123      不匹配
(?<abc)123      abc123      匹配,123
                def123      不匹配
(?<!abc)123     abc123      不匹配
                def123      匹配,123
                kkk123      匹配,123

在涉及到正则表达式非的概念时,通常使用到前瞻后顾很好解决。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读