1

我想从下面的字符串中删除每次出现的 (title) 。我该如何为此编写正则表达式?我尝试了如下的正则表达式,但它不起作用。

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 回答