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

时间:2010-04-23 17:16:13

标签: visual-studio regex replace

我需要在它之前找到没有给定字符串的所有字符串。

For Instance:

Find: "someValue"

**所有带有“function(”之前的结果都应该被忽略

Visual Studio正则表达式会找到此

value = someValue

忽略这样的内容

function(someValue)

最好的方法是什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

你可以使用负面的后视:

(?<!function\()someValue

答案 1 :(得分:2)

你说

  

Visual Studio正则表达式会找到:

结合您问题的标题,这让我觉得您正在尝试在Visual Studio中搜索和替换对话框,而不是在应用程序中使用正则表达式。

如果是这样,那么我认为你可能会失去运气; Visual Studio的正则表达式不是很强大,而且它们的语法相当奇怪,似乎没有在其他任何地方使用过!

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

顺便提一下,如果您想使用PowerShell执行此操作,则会搜索foo.js,并将输出复制到fooNew.js

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