1

我有一种情况,逗号在不应该的时候被去掉,例如,

约翰福音 3:16,18,4:2 变成约翰福音 3:16 18 4:2

我想把逗号放回去,并认为我可以这样做

string strRegex = @"(\d+)\s+(\d+)";
RegexOptions myRegexOptions = RegexOptions.None;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"John 3:16 17 4:3";
string strReplace = @"$1,$2";

return myRegex.Replace(strTargetString, strReplace);

但这只是给了我

约翰福音 3:16,18 4:2

我错过了什么?

4

2 回答 2

5

使用后向和前瞻,这样数字就不是匹配的一部分:

string strRegex = @"(?<=\d)\s+(?=\d)";
...
string strReplace = @",";
于 2013-06-12T21:49:24.163 回答
1

您可以尝试使用lookbehind:

@"(?<=\d)\s+(\d+)"

并替换为

,$1
于 2013-06-12T21:50:15.630 回答