【问题标题】:Regex: Find/Replace All Substrings Without a Given String Before?正则表达式:查找/替换之前没有给定字符串的所有子字符串?
【发布时间】:2011-02-11 15:12:52
【问题描述】:
我需要找到之前没有给定字符串的所有字符串。
例如:
Find: "someValue"
**所有带有“function(”的结果都应该被忽略
Visual Studio 正则表达式会找到这个:
value = someValue
并且忽略看起来像这样的东西:
function(someValue)
最好的方法是什么?
感谢您的帮助!
【问题讨论】:
标签:
visual-studio
regex
replace
【解决方案1】:
你可以使用消极的后视:
(?<!function\()someValue
【解决方案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