在RegEx中是否可行;如果是这样的话,只有当字符之间没有包含指定的字符时才能从字符到字符进行搜索。
例如:
Function
{
Parameter Parameter_Name
}
Function
{
}
我想运行以“功能”开头并以“}”结尾的搜索,其中“参数”不会出现在两者之间。
作为参考,我使用的是Notepad ++的RegEx搜索,我启用了“.matches newline”,并且在执行其他多行搜索时没有遇到任何问题,我只是不确定语法。
我尝试了一些
的内容Function.*!?Parameter.*?\}
但是这个搜索只捕获了Function和文件中最后一个“{”之间的所有内容。同时,下面将始终停在第一个“}”字符。
Function.*?\}
我错过了什么?
答案 0 :(得分:1)
天真的答案,但雇用它
Function(?![^}]*\bParameter\b)[^}]*?\}
我认为:
Function
无法包含嵌套{...}
块(至少没有嵌套}
)Parameter
是单独的字词,因此Parameter_Name
不会被计为Parameter
。 (?!...)
部分是negative-look-ahead。
Function(?![^}]*\bParameter\b)
检查Function
之后是否有Parameter
之前没有}
的{{1}}。换句话说,它之前可以包含}
旁边的任何其他字符,这意味着此Parameter
不会超出当前检查的Function{...}
范围。这意味着,负面预测只会检查,直到找到文本的第一个}
或结尾。