正则表达式替换匹配中前一个字符的位置

时间:2013-11-24 15:54:09

标签: .net regex

例如,有一个像

这样的字符串
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

1 个答案:

答案 0 :(得分:2)

尝试:

Regex.Replace(x, @"(?<!#)\btest1\b", "test2");

RegExr Example

你有正确的想法,但你的正则表达式摆脱vartest之间的空间是因为[^#]匹配该空格。

(?<=#)是一个积极的外观,它表示我在#的比赛背后,但不包括在比赛中。

在这种情况下,您可以使用(?<!#),这是一个负面的后顾之处 - 寻找与#不匹配的内容,并且不要在匹配中包含它。