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
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
嘗試:
Regex.Replace(x, @"(?<!#)\btest1\b", "test2");
你有正確的想法,但你的正則表達式得到擺脫var
和test
之間的空間的原因是因爲[^#]
匹配該空間。
(?<=#)
是一個積極向後看,它說看看我的匹配#
後面,但不包括它在比賽。
在這種情況下,您可以使用(?<!#)
,這是一個負反向 - 尋找與#
不匹配的東西,並且不要將其包含在匹配中。
爲什麼你不想更換'#test1'?那麼'not-test1-test2'呢? – sln