我一直在试着想出这个问题。我需要在一组括号内替换双引号。我的下面的例子显示单引号,但我仍有问题
这对我有用 -
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正在追加?单引号后,但我需要它用?替换单引号。我很难过。
答案 0 :(得分:1)
要匹配方括号内的所有单引号,您需要转义开头[
,否则它将被视为特殊字符(打开字符类):
(?<=\[[^][]*)'(?=[^][]*])
此外,您需要将字符限制为与[
和]
不同。为此,您可以使用[^][]
否定字符类(这将匹配[
和]
以外的任何字符。
请参阅regex demo