VB.Net 正则表达式替换括号内的双引号

VB.Net Regex replace double quote inside of brackets

我一直在想办法解决这个问题。我需要替换一组括号内的双引号。我下面的示例显示了单引号,但我仍然遇到问题

这对我有用 -

Dim input As String = "This is my ['Test'] that works"
Dim output As String = Regex.Replace(input, "(?<=my.*)'(?=.*that)", "?")

生成此字符串 - This is my [?Test?] that works.

但是如果我尝试这是追加而不是替换单引号 -

Dim input As String = "This is my ['Test'] that works"
Dim output As String = Regex.Replace(input, "(?<=[.*)'(?=.*])", "?")

生成这不是我想要的 - This is my ['?Test'?] that works

如您所见,Regex.replace 附加了 ?在单引号之后,但我需要它用 ? 替换单引号。我被难住了。

要匹配方括号内的所有单引号,需要对开头[进行转义,否则将被视为特殊字符(开头一个字符class):

(?<=\[[^][]*)'(?=[^][]*])

此外,您需要限制字符与 [] 不同。为此,您可以使用 [^][] 否定字符 class(这将匹配 [] 以外的任何字符)。

regex demo