Я пытаюсь обфускать строку, но вам нужно сохранить пару шаблонов. В основном, все буквенно-цифровые символы должны быть заменены одним символом (скажем, «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: no вы не можете, потому что один «Q» не соответствует. –
Я должен неправильно понять, что он хочет делать. Я думал, что он хочет сохранить QQQ и RRR – hwnd
+1 Возможно, вам нужно немного изменить регулярное выражение, чтобы стать '((?> (?: Q | R) {3}" "| [^ A-Z0-9] +) *) [A-Z0-9] ', так что он принимает двойную кавычку и« RRR »'(и использует ignorecase). – Jerry