3

私は次のようなURLを持っています

 /.../Male/...
 or

 /../Female/...

今、文字列の男性女性部分をfooに置き換えるために、次のようなことをしたい

 /../foo/..

これの正規表現は何ですか...現在、私は以下のようにしていますが、成功していません

url.replace("(fe)?male","foo")
4

3 に答える 3

8

replaceAll正規表現を使用するには使用する必要があり、式はさらに単純になる可能性があります。

url.replaceAll("(Fem|M)ale","foo");

また

url.replaceAll("Female|Male","foo");
于 2013-07-28T08:55:32.363 に答える
7

プレーンテキストを検索する ではなく、置換対象を検索するために正規表現replaceAll()を使用する が必要です。replace()

url = url.replaceAll("(fe)?male","foo");

また、文字列は不変であるため、replace メソッドを呼び出しても文字列は変更されず、変更が加えられた新しい文字列が返されるため、結果を変数に割り当てる必要があることに注意してください。

より良い正規表現は次のようになります。

url = url.replaceAll("(?i)\\b(fe)?male\\b","foo");

正規表現は、置き換えられるものが女性/男性という単語\b全体であることを確認します。それがなければ、「maledic」の「male」に置き換わります。\b

(?i)、一致の大文字と小文字を区別しません。

于 2013-07-28T08:53:47.307 に答える
3

replaceAllパターンに使用する必要があります。

また、次のように、大文字と小文字を区別しないパターンの使用を検討する必要があります。

String input = ".../Female/...";
System.out.println(input.replaceAll("(?i)(fe)?male", "foo"));

出力:

.../foo/...
于 2013-07-28T08:55:09.720 に答える