在此输入中:
hello Sam, how are you 27‏ do not worry 5
how are you  why you are not OK.ℏ and ‍
我想执行一些条件替换:
"2" => "a"
"7" => "b"
"5" => "c"
我还需要排除‏
和 
等字符串,我们可以使用此模式:&#x\w+;
这是我开始的。但是,我不知道如何排除这种模式。
inputstring="hello Sam, how are you 27‏ do not worry 5
how are you  why you are not OK.ℏ and ‍";
string reg = @"2!(&#x\w+;)";
Regex myRegex = new Regex(reg);
string newstring = myRegex.Replace(inputstring, "a");
答案 0 :(得分:3)
我们可以使用这个令人惊讶的简单正则表达式:
&#x\w+;|([257])
这个问题是这个问题中解释为"regex-match a pattern, excluding..."的技术的经典案例 - 而且是一个特别有趣的问题,因为根据匹配的数字有不同的替换。
在正则表达式中,交替|
的左侧与完成html entities
匹配。我们将忽略这些匹配(我们匹配它们以中和它们)。右侧匹配数字2,5或7,我们知道它们是正确的,因为它们与左侧的表达式不匹配。
此程序显示了如何使用正则表达式(请参阅the online demo底部的结果):
var myRegex = new Regex(@"&#x\w+;|([257])");
string s1 = @"hello Sam, how are you 27‏ do not worry 5
how are you  why you are not OK.ℏ and ‍ ";
string replaced = myRegex.Replace(s1, delegate(Match m) {
switch (m.Groups[1].Value) {
case "2": return "a";
case "7": return "b";
case "5": return "c";
default: return m.Value;
}
});
Console.WriteLine(replaced);
<强>输出:强>
hello Sam, how are you ab‏ do not worry c
how are you  why you are not OK.ℏ and ‍
参考