例如,有一个像
这样的字符串string x = "var test1 = $('#test1').val();"
我只想替换test1
而不是#test1
。
C#代码:
Regex.Replace(x, "[^#]" + @"\btest1\b", "test2");
*\b \b = match complete word only
当我使用[^#]
并不是我喜欢的#test1
,而是
var test1
成为:
vartest1
答案 0 :(得分:2)
尝试:
Regex.Replace(x, @"(?<!#)\btest1\b", "test2");
你有正确的想法,但你的正则表达式摆脱var
和test
之间的空间是因为[^#]
匹配该空格。
(?<=#)
是一个积极的外观,它表示我在#
的比赛背后,但不包括在比赛中。
在这种情况下,您可以使用(?<!#)
,这是一个负面的后顾之处 - 寻找与#
不匹配的内容,并且不要在匹配中包含它。