Как подвергнуть цензуре конкретное слово в Java с помощью Regex
Я хотел бы знать, как подвергать цензуре слово "задница" (или слово "A"), используя Java Regex, очень безопасный.
Это усложняет задачу, поскольку слово "А" может содержаться во многих других безобидных словах. Например, "трава".
Я частично настроил начальную часть для многих префиксов слова "А", но, похоже, не могу найти, как подвергать цензуре слово без цензуры суффиксов, таких как "убийца".
String string = String.replaceAll("^(?!(b|B|gr|gR|Gr|GR|gl|gL|Gl|GL|m|M|s|S|h|H|p|P|g|G)).*[aA4]+[\\W[_]]*?[$5SszZ]+[\\W[_]]*?[$5SszZ]+", "***");
Я считаю, что это очень сложно, и до сих пор не могу найти решение пока.
1 ответ
ИСПОЛЬЗОВАНИЕ LOOKAROUNDS
(?<=\s)(?:ass)(?=\s)
проверим пробелы или разрывы строк вокруг слова. Если вы хотите, чтобы слово подвергалось цензуре, даже если оно окружено не буквенными символами (:ass:
), использовать этот:
(?<=\W)(?:ass)(?=\W)
Если вы ищете поиск без учета регистра, добавьте (?i)
в начале.
ИСПОЛЬЗОВАТЬ СЛОВА ГРАНИЦ
Кто-то в комментариях предложил лучший способ:
\b(?:ass)\b
Или для специальных символов:
\b([&#"'-_$^])?(?:ass)([&#"'-_$^])?\b