【发布时间】:2019-02-28 06:47:09
【问题描述】:
代码如下:
var x = "Word1 Word2 @aaa|sss Word3 Word4 @aaa|sss Word5";
var s = Regex.Replace(x, "\\b@aaa|sss\\b", "55", RegexOptions.Singleline);
预期输出:
字1 字2 55 字3 字4 55 字5
实际:
Word1 Word2 @aaa|55 Word3 Word4 @aaa|55 Word5
我敢肯定,这很愚蠢……为什么?
这个问题不是关于“特殊字符”as in here。这倒是不明白问题出在哪里。而且上面的问题没有这里的具体情况。
【问题讨论】:
-
\b匹配单词边界,但@不是单词字符,所以空格和@之间的位置不是单词边界。另外,如果你想匹配一个文字管道而不是替代,你应该转义| -
@CertainPerformance 不错。我需要以某种方式将此
@包含在此搜索中。所以...看起来应该这样做:@"@aaa\|sss\b"