1

以下のような文字列から (タイトル) をすべて取り除きたいと思います。そのための正規表現をどのように書くのですか? 以下のような正規表現を試しましたが、うまくいきません。

String ruler1="115.28(54)(title) is renumbered 115.363(title) and amended to read:";
Pattern rulerPattern1 = Pattern.compile("(.*)\\(title\\)(.*)", Pattern.MULTILINE);

System.out.println(rulerPattern1.matcher(ruler1).replaceAll(""));
4

3 に答える 3

3

正規表現はそれよりもはるかに単純です。必要なのは、次のように括弧をエスケープすることだけです。

\\(title\\)

は正規表現を取るPatternため、クラスを明示的に使用する必要はありません。replaceAll

String ruler1="115.28(54)(title) is renumbered 115.363(title) and amended to read:";
String result = ruler1.replaceAll("\\(title\\)", "");

あなたのパターンは、次を含む文字列内のすべてを置き換えます"(title)"

これはideoneのデモです。

于 2013-06-10T21:40:38.737 に答える
1

提供するものStringを使用するだけです:

System.out.println(ruler1.replace("(title)", ""));

その名前 vs.replaceAll()に惑わされないでください。非常に誤解を招きます。

  • .replace()正規表現を使用しません。
  • .replace()すべてのオカレンスを置き換えます。

あなたがする必要があることを考えると、それは完璧に適合しています。のJavadoc.replace()

于 2013-06-10T21:46:23.373 に答える
0

正規表現は、それほど単純なものに対する優れたソリューションではないと思います。Apache commons-lang パッケージのStringUtils.replace()を試してください。

String result = StringUtils.replace(ruler1,"(title)","");
于 2013-06-10T21:41:11.013 に答える