使用正则表达式提取特定的字符串模式

时间:2014-05-18 05:33:14

标签: java regex

我有一个文本,其中以字符串和数字的形式显示某些输出,从中我有一段特定的文本如下。我想从中提取某段文字

这是我的一小部分内容

gjhsgdjhgfjhdgfjkhsdgfjkhgsdfk7868736876534
Pattern is:
(4,24,[5,96]) -> (1,14,[14,15]), that is: "Poland" -> "Poland"
(4,46,[36,39]) -> (1,14,[14,15]), that is: "Kim" -> "Kim"

fhafsdhjdfgjhdagfkhj66876493985694(hjiikfghkjfhg,98698)
(hhgjhgdfj,jhgkjdhgf)

从这里我想得到输出

"Poland" -> "Poland"
"Kim" -> "Kim"
"The police" -> "The city police on Friday"

我尝试的代码是

Pattern p = Pattern.compile("(Pattern is:)\\((.*?)\\)");
  Matcher m = p.matcher(str);

  while(m.find())
  {
      System.out.println("fhkjsdfhkjsdh");
      System.out.println(m.group(2));

  }

2 个答案:

答案 0 :(得分:1)

您可以使用:

Pattern p = Pattern.compile("\"[^\"]+\"\\s*->\\s*\"[^\"]+\"");

使用整体匹配。

请参阅demo

表达式只检查"Poland" -> "Poland"形式的字符串,而无需检查Pattern is是否在任何地方匹配,因为(i)在输入中似乎不需要,以及(ii)它是不清楚什么构成模式部分的结束分隔符。

请告诉我们这是否符合您的要求。

答案 1 :(得分:0)

试试这个:

String newStr = str.replaceAll("^.*:", "");
System.out.println(newStr);