8

文字列変数が大文字と小文字を区別しないと見なされ、Access、accessなどのすべての単語をそのようなもののWINDOWSに置き換えるように、Javaで変数の正規表現を作成するのを手伝ってくれる人はいますか?

これはコードです:

$html=html.replaceAll(label, "WINDOWS");

labelは文字列変数であることに注意してください。

4

4 に答える 4

26

「大文字と小文字を区別しない」スイッチを正規表現に追加するだけです。

html.replaceAll("(?i)"+label, "WINDOWS");

注:ラベルに特別な正規表現の意味を持つ文字を含めることができる場合(たとえば、labelが".*"であった場合)、ラベルをプレーンテキスト(つまり、正規表現ではない)として扱いたい場合は、ラベルの前後に正規表現の引用符を追加します。

html.replaceAll("(?i)\\Q" + label + "\\E", "WINDOWS");

また

html.replaceAll("(?i)" + Pattern.quote(label), "WINDOWS");
于 2012-06-28T02:17:42.850 に答える
7

String.replaceAllは、マッチャーを作成してそのreplaceAllメソッドを呼び出すのと同じであるため、次のように大文字と小文字を区別しないようにすることができます。

html = Pattern.compile(label, Pattern.CASE_INSENSITIVE).matcher(html).replaceAll("WINDOWS");

参照:String.replaceAllおよび Pattern.compile JavaDocs

于 2012-06-28T00:50:00.167 に答える
1

パターンとマッチャーを使用するだけです。これがコードです

Pattern p = Pattern.compile("Your word", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("String containing words");
String result = m.replaceAll("Replacement word");

パターンでは大文字と小文字が区別されないため、パターンの使用は簡単です。

詳細については、を参照してください。

正規表現を使用したマッチメイキング

Java:パターンとマッチャー

于 2012-06-28T00:48:10.433 に答える
-1

ラベルを次のようなものにしたいかどうかはわかりませんが[Aa][cC][cC][eE][sS][sS]

または代わりに

html = Pattern.compile(lable, Pattern.CASE_INSENSITIVE)
        .matcher(html).replaceAll("WINDOWS");
于 2012-06-28T00:59:45.410 に答える