0

我有一个正则表达式:

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

Rubular中工作并按预期匹配两个字符串中的第二个:

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

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

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

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

4

1 回答 1

2

下面的正则表达式改编自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)工作方式。

于 2013-03-18T16:52:26.443 回答