0

これまでのところ、私はこれをまとめました:

\b\S*[^\w\s^'^&]\S*\b

検閲された単語全体をキャッチしようとしています: IE d*mnor d_mnbut don't want &or 't 's 'reto match. また、数字のような1.23ものが一致しないようにする必要があります。

私の目標は、文字の代わりに記号を使用して、罵り言葉を紛らわそうとしている人々を捕まえることです。したがって、アポストロフィなどを除いて、記号を含む単語はすべてキャッチする必要があります。記号は書式設定であり、&文字ごとに最大 1 つ存在できます。だから'&使用しても大丈夫です。小数を含む数字は悪口ではないため、機能するはずです。s**tand d_mnor d.mnetcのようなものをキャッチする必要があります。

数字の部分で助けが必要です。

試し^\d.\dてみましnot digit dot digitたが、うまくいきませんでした。

4

2 に答える 2

0

これが私の暫定的な答えです:

\b[a-zA-Z]*(?:[^\w\s^'&]|_)+[a-zA-Z]+\b

[a-zA-Z]代わりに使用すると\S、数字が含まれなくなりました。

EDIT :単語が文字で終わる必要があります。のように繰り返される特殊文字に一致するようにもしましたa$$hole

于 2013-01-22T20:15:00.247 に答える
0

これを使用するのはどうですか:

\b\p{L}*[\p{S}\p{P}]((\p{L}[\p{P}\p{S}])|([\p{P}\p{S}]\p{L})|(\p{L}))+\b
  • \p{L}任意の (Unicode) 文字です
  • \p{S}は任意の記号です
  • \p{P}任意の句読点

パターンの最初の部分 ( \p{L}*[\p{S}\p{P}]) では、単語に少なくとも 1 つの記号または句読点が含まれている必要があります。パターンの残りの部分は、((\p{L}[\p{P}\p{S}])|([\p{P}\p{S}]\p{L})|(\p{L}))+物事がどのように繰り返されるかを指定します。文字の後に句読点/記号が続く、句読点/記号の後に文字が続く、または文字だけのシーケンスは許容されます。

Java コードでこのパターンを使用するには、最初にすべてのバックスラッシュ文字を二重のバックスラッシュに置き換えてください。

于 2013-01-22T22:31:31.120 に答える