【问题标题】:Regex: trying to match two strings *without* a certain char in between正则表达式:尝试匹配两个字符串*没有*之间的某个字符
【发布时间】:2015-12-24 20:15:52
【问题描述】:

我正在尝试匹配带有“function”的行,后跟“insert”作为一个完整的单词,没有在两者之间有“$”。这意味着它应该匹配

function static insert()

但不是

function insertRecord($insert)

我尝试过负面的前瞻/后视,例如:

function.*(?!\$).*\binsert\b

但什么都没有。

我一直在 Ubuntu 15.10 和 PhpStorm 上的 grep 2.6.3 上尝试这个(后者我放的库存较少)。是的,我一直将我的正则表达式放在 grep 的单引号中。我也试过https://www.regex101.com,这似乎同意我用错了。我什至在测试站点上尝试过缩写版本,但我不知道是哪一部分

function.*(?!\$)

不明白。

在我所有的实验中,一个一致的问题是,它总是在“插入”之前出现“$”的行。

【问题讨论】:

    标签: regex grep negative-lookahead


    【解决方案1】:

    试试这个:

    function[^$]*\binsert\b
    

    这只是使用否定字符类 [^$] 来限制字符之间的字符以禁止任何美元符号。

    您已经发现在“插入”周围需要字边界\b

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      相关资源
      最近更新 更多