RegEx Search(Notepad ++) - 从字符返回到没有指定字符的字符

时间:2014-07-22 22:51:44

标签: regex notepad++

在RegEx中是否可行;如果是这样的话,只有当字符之间没有包含指定的字符时才能从字符到字符进行搜索。

例如:

Function
    {
        Parameter Parameter_Name
    }

Function
    {
    }

我想运行以“功能”开头并以“}”结尾的搜索,其中“参数”不会出现在两者之间。

作为参考,我使用的是Notepad ++的RegEx搜索,我启用了“.matches newline”,并且在执行其他多行搜索时没有遇到任何问题,我只是不确定语法。

我尝试了一些

的内容
Function.*!?Parameter.*?\}

但是这个搜索只捕获了Function和文件中最后一个“{”之间的所有内容。同时,下面将始终停在第一个“}”字符。

Function.*?\}

我错过了什么?

1 个答案:

答案 0 :(得分:1)

天真的答案,但雇用它

 Function(?![^}]*\bParameter\b)[^}]*?\}

我认为:

  • 您的Function无法包含嵌套{...}块(至少没有嵌套}
  • Parameter是单独的字词,因此Parameter_Name不会被计为Parameter

(?!...)部分是negative-look-ahead

Function(?![^}]*\bParameter\b)检查Function之后是否有Parameter之前没有}的{​​{1}}。换句话说,它之前可以包含}旁边的任何其他字符,这意味着此Parameter不会超出当前检查的Function{...}范围。这意味着,负面预测只会检查,直到找到文本的第一个}或结尾。