私は次のようなURLを持っています
/.../Male/...
or
/../Female/...
今、文字列の男性女性部分をfooに置き換えるために、次のようなことをしたい
/../foo/..
これの正規表現は何ですか...現在、私は以下のようにしていますが、成功していません
url.replace("(fe)?male","foo")
replaceAll
正規表現を使用するには使用する必要があり、式はさらに単純になる可能性があります。
url.replaceAll("(Fem|M)ale","foo");
また
url.replaceAll("Female|Male","foo");
プレーンテキストを検索する ではなく、置換対象を検索するために正規表現replaceAll()
を使用する が必要です。replace()
url = url.replaceAll("(fe)?male","foo");
また、文字列は不変であるため、replace メソッドを呼び出しても文字列は変更されず、変更が加えられた新しい文字列が返されるため、結果を変数に割り当てる必要があることに注意してください。
より良い正規表現は次のようになります。
url = url.replaceAll("(?i)\\b(fe)?male\\b","foo");
正規表現は、置き換えられるものが女性/男性という単語\b
全体であることを確認します。それがなければ、「maledic」の「male」に置き換わります。\b
は(?i)
、一致の大文字と小文字を区別しません。
replaceAll
パターンに使用する必要があります。
また、次のように、大文字と小文字を区別しないパターンの使用を検討する必要があります。
String input = ".../Female/...";
System.out.println(input.replaceAll("(?i)(fe)?male", "foo"));
出力:
.../foo/...