我试图混淆一个字符串,但需要保留一些模式.基本上,所有字母数字字符都需要替换为单个字符(例如"X"),但需要保留以下(示例)模式(请注意,每个模式在开头都有一个空格)
我已经看了一些关于负向前瞻/后方的样本,但仍然没有任何运气(仅测试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");
Run Code Online (Sandbox Code Playgroud)
正确的结果应该是:
"XXXX XXXX XXXXX XXXXX QQQ""XXXXX""XXXXX"XXXXXXXX
Run Code Online (Sandbox Code Playgroud)
这适用于完全匹配,但会返回"QQR"之类的失败
"XXXX XXXX XXXXX XXXXX XQR""XXXXX""XXXXX"XXXXXXXX
Run Code Online (Sandbox Code Playgroud)