0

非常に安全な Java 正規表現を使用して、単語「ass」(または単語) を検閲する方法を知りたいです。

Aワードは他の多くの無害なワードに含まれている可能性があるため、これは物事を困難にします. たとえば、「草」。

A単語の多くの接頭辞の先頭部分を部分的にセットアップしましたが、「暗殺者」のような接尾辞を検閲せずに単語を検閲する方法を見つけることができないようです.

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]+", "***");

私が見つけたこれは非常に難しく、まだ解決策を見つけることができません。

4

1 に答える 1

2

ルックアラウンドの使用

(?<=\s)(?:ass)(?=\s)

単語の周りのスペースまたは改行をチェックします。文字以外の文字 ( :ass:) で囲まれている場合でも単語を検閲したい場合は、次のようにします。

(?<=\W)(?:ass)(?=\W)

大文字と小文字を区別しない検索を探している場合は、最初に追加(?i)してください。

単語境界の使用

コメントの誰かがより良い方法を提案しました:

\b(?:ass)\b

または特殊文字の場合:

\b([&#"'-_$^])?(?:ass)([&#"'-_$^])?\b
于 2015-04-17T03:56:58.710 に答える