我试图混淆字符串,但需要保留几个模式。基本上,所有字母数字字符需要与单个字符代替(说“X”),但以下的(例如)图案需要保留(请注意,每个图案在开始具有单个空间)替换除字符串以外的字符串中的所有字母数字字符
- QQQ“
- RRR”
我已经通过在负向前查找/屁股几件样品看,但仍然不是没有这个(仅测试QQQ)任何运气。
var test = @"""SOME TEXT AB123 12XYZ QQQ""""empty""""empty""1A2BCDEF";
var regex = new Regex(@"((?!QQQ)(?<!\sQ{1,3}))[0-9a-zA-Z]");
var result = regex.Replace(test, "X");
正确的结果应该是:
"XXXX XXXX XXXXX XXXXX QQQ""XXXXX""XXXXX"XXXXXXXX
这适用于完全匹配,但是无法与类似 'QQR'“,它返回
"XXXX XXXX XXXXX XXXXX XQR""XXXXX""XXXXX"XXXXXXXX
@hwnd:不可以,因为一个'Q'不匹配。 –
我必须误解他想做的事情。我以为他想保留QQQ和RRR – hwnd
+1也许你应该修改一下正则表达式变成'((?>(?:Q | R){3}“”| [^ A-Z0-9] +) *)[A-Z0-9]'只是因为它接受双引号和'RRR''(并使用ignorecase)。 – Jerry