regex 仅当整行不包含特定术语时才匹配特定字符串

46scxncf  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(91)

我想使用Regex匹配变量nationFile的所有示例,除非该变量包含在import语句中。本质上只匹配字符串nationFile,只要整行开头不包含import。
我从这个正则表达式开始,但没有运气。

(?<!import)nationFile

字符串
这不起作用,因为在import和nationFile之间可能有其他文本,但是我所做的任何尝试似乎都将此文本作为匹配的一部分包含在中间,这是我不希望的。
这种解决方案也不起作用,因为lookbehind需要具有固定的长度。

(?<!import.*)nationFile

bbuxkriu

bbuxkriu1#

这里有一个解决方案可能不是很优雅,但它应该工作。
假设您要将nationFile替换为somethingElse
如果您使用的是VSCode,则无法使用具有非固定长度的lookbehind。
但您可以使用以下正则表达式捕获整行代码:

^((?:(?!import).)*?)nationFile

字符串
这样可以确保在遇到nationFile之前没有import,然后将其替换为

$1somethingElse


$1指的是行首和nationFile之间的任何值。所以你可以保存somethingElse之前的所有东西。
但是,您可能需要多次搜索和替换,因为它一次只能捕获nationFile的一个示例,直到没有匹配项为止。

相关问题