1

別のパターンに一致しない場合にのみ、パターンに一致する部分文字列を置き換えたい。たとえば、以下に示すコードでは、すべての '%s' を置き換えたいが、':%s' はそのままにしておく必要があります。

String template1 = "Hello:%s";
String template2 = "Hello%s";

String regex = "[%s&&^[:%s]]";

String str = template1.replaceAll(regex, "");
System.out.println(str);

str = template2.replaceAll(regex, "");
System.out.println(str);

出力は次のようになります。

Hello:%s
Hello

正規表現に何かが欠けています。手がかりはありますか?ありがとう!

4

1 に答える 1

7

否定的な後読みを使用して目標を達成します。

String regex = "(?<!:)%s";

前に右%sがない場合にのみ一致します。:

于 2013-07-30T22:54:45.453 に答える