【问题标题】:How to search for a negated Unicode backreference (PCRE)?如何搜索否定的 Unicode 反向引用(PCRE)?
【发布时间】:2014-04-04 15:26:51
【问题描述】:

我想使用 PCRE 正则表达式查找由冒号分隔的两个不相同的 Unicode 单词。

以这个字符串为例:

Lôrem:ipsüm dõlör:sït amêt:amêt cønsectetûr:cønsectetûr âdipiscing:elït

我可以很容易地找到用冒号分隔的两个相同的单词:

(\p{L}+):(\1)

将匹配:cønsectetûr:cønsectetûramêt:amêt

但是,我想否定反向引用以仅查找由冒号分隔的不同 Unicode 单词。

在 PCRE 中否定反向引用的正确方法是什么?

(\p{L}+):(^\1) 显然不起作用

【问题讨论】:

    标签: regex unicode pcre backreference


    【解决方案1】:

    如果捕获的部分在冒号后重复,您首先使用否定的前瞻来防止匹配:

    (\p{L}+):(?!\1)
    

    那你需要匹配第二个unicode字,另一个\p{L}+

    (\p{L}+):(?!\1)\p{L}+
    

    最后,为了防止错误匹配,使用单词边界:

    \b(\p{L}+):(?!\1\b)\p{L}+\b
    

    regex101 demo

    【讨论】:

    • 可以去掉最后一个单词的边界。
    猜你喜欢
    • 2010-09-06
    • 2013-04-14
    • 2015-08-21
    • 2014-02-21
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多