在VS2017中,搜索并替换为包括lookbehinds的正则表达式在VS2017中不起作用

时间:2018-11-02 16:56:07

标签: .net regex visual-studio-2017 lookbehind find-replace

在Visual Studio 2017中,我试图将某些行变成这样:

[AddressId] [int] NOT NULL,
[CountryId] [int] NULL,
[POBoxCountryId] [int] NULL,
[Name] [nvarchar] (100) NULL,

进入此:

[AddressId] int NOT NULL,
[CountryId] int NULL,
[POBoxCountryId] int NULL,
[Name] nvarchar (100) NULL,

在我看来,正则表达式(?<=\[\w+\]\s)\[(\w+)\]应该与第二对方括号完全匹配,并捕获其中的内容。

当我在RegexStorm中检查它时,似乎确实是这样:regexstorm link

此外,在Visual Studio中,如果执行 find ,也可以正确找到它。显示匹配的行。


但是,如果我尝试执行查找并替换(用$1替换),则不会进行替换。 (该替代产品正在regexStorm中工作)

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

您可以使用

查找内容(\[\w+]\s+)\[(\w+)]
替换为$1$2

请参见regex demo

详细信息

  • (\[\w+]\s+)-第1组($1):[,1个以上的字符字符,]和1个以上的空格
  • \[-一个[字符
  • (\w+)-第2组($2):1个以上的字符字符
  • ]-一个]字符。