我有一个文本,其中以字符串和数字的形式显示某些输出,从中我有一段特定的文本如下。我想从中提取某段文字
这是我的一小部分内容
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));
}
答案 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);