正则表达式:查找/替换所有在特定字符串之前没有给定字符串的子字符串?

3

我希望你能够帮忙翻译以下关于IT技术的内容。需要翻译的内容是寻找所有在某个字符串之前没有给定字符串的字符串。

例如:

Find: "someValue"

所有带有 "function(" 前缀的结果应该被忽略。

Visual Studio 的正则表达式可以找到这个:

value = someValue

并且忽略类似于这样的内容:

function(someValue)

最佳方法是什么?

谢谢你的帮助!

2个回答

2
您可以使用负向先行断言:
(?<!function\()someValue

2

你说了

Visual Studio正则表达式可以找到这个:

结合你的问题标题,我想你可能正在尝试在Visual Studio的搜索和替换对话框中做一些事情,而不是在应用程序中使用正则表达式。

如果是这种情况,那么我认为你可能会很遗憾;Visual Studio的正则表达式功能并不是很强大,而且它们具有相当奇怪的语法,似乎没有任何其他地方使用过!

我的建议是要么使用不同的文本编辑器,要么使用SilentGhost描述的正则表达式在.NET应用程序(或PowerShell脚本)中进行替换。当我需要在编辑器中进行正则表达式处理,而Studio不够用时,我倾向于使用TextPad。它不是非常漂亮,但它功能强大并且有很好的宏支持。

顺便说一句,如果你想使用PowerShell来完成它,这将搜索foo.js,并将输出复制到fooNew.js

(get-content D:\junk\foo.js) -replace
    '(?<!function\()someValue', 'someOtherValue' > D:\junk\fooNew.js

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接