为什么这个反向RegEx匹配在Visual Studio中不起作用?

时间:2013-03-18 16:46:12

标签: regex visual-studio-2005

我有一个RegEx:

ConfigurationManager.ConnectionStrings.Item\(\"((?!foo).)*\"

适用于Rubular,并按预期匹配两个字符串的第二

ConfigurationManager.ConnectionStrings.Item("foo")
ConfigurationManager.ConnectionStrings.Item("bar")

但是,如果我在Visual Studio 2005中运行相同的表达式 - 我没有匹配。它实际上应匹配ConfigurationManager.ConnectionStrings.Item...存在的每个实例,因为它们都不匹配单词foo

当然,除非反向表达式在Visual Studio中不起作用。

如果这是真的,我将如何在Visual Studio 2005中获得相同的结果?

1 个答案:

答案 0 :(得分:2)

下面的正则表达式改编自regular expression for find and replace feature in Visual Studio的语法,不是通常的基于Perl的正则表达式语法

ConfigurationManager.ConnectionStrings.Item\("(~(foo).)*"

~(pattern),根据描述:

Prevent match    ~(X)    Prevents a match when X appears at this point 
                         in the expression. For example, real~(ity) matches 
                         the "real" in "realty" and "really," but not the
                         "real" in "reality."

应该与负前瞻(?!pattern)的工作方式类似。