0

必要な答えを提供する可能性のある投稿をいくつか検索しましたが、見つかりませんでした。

なぜこの正規表現なのだろうか:

Pattern.compile("[^\\w\\s\\d\\&]")

次のような文字列では正しく機能しません。

"AE&E randomstr§%%%ing b§)$§$/bla & some text"

結果は次のようになります (テスト済み)。

"AE E randomstring blabla some text"

私は特にアンパサンドを除外しましたが。以前のトークンはそれを覆しますか? 誰でもこの背後にあるロジックを明確にすることができますか?

私のコード:

    String str = "AE&E randomstr§%%%ing b45747bla & some text";
    Pattern pattern = Pattern.compile("[^\\w\\s\\d\\&]");
    Matcher matcher = pattern.matcher(str);
    str = StringUtils.normalizeSpace(matcher.replaceAll(" "));
4

2 に答える 2

1

正常に動作します。許可された文字からアンパサンドを除外したため、アンパサンドが置き換えられます。

于 2012-10-16T18:24:38.140 に答える
1

謝らなければなりません。エスケープせずにエスケープしてみましたが、うまくいかないようです。Roddy of the Frozen Peas は私にもう一度試してもらいました。魔法のように、スクリプトは本来あるべきことを実行します。

コメンテーターのおかげで、

-解決しました!

作業コード:

String str = "AE&E randomstr§%%%ing b45747bla & some text";
Pattern pattern = Pattern.compile("[^\\w\\s\\d&]");
Matcher matcher = pattern.matcher(str);
str = StringUtils.normalizeSpace(matcher.replaceAll(" "));
于 2012-10-16T18:31:02.663 に答える