[英]Java regex to match previous 2 lines of a pattern
something Line One
something Line two
Last annotated on December 31, 2014
I don't care what is in between. Anything can go here. Any number of lines
I don't care what is in between. Anything can go here. Any number of lines
Something Line three
something line four
Last annotated on November 15, 2014
I want to write a regex to match 我想写一个正则表达式来匹配
something Line One
something Line two
Last annotated on December 31, 2014
and 和
Something Line three
something line four
Last annotated on November 15, 2014
I have written below regex that works on Sublimetex, but same regex does not work on java. 我在下面写了可在Sublimetex上运行的正则表达式,但同一个正则表达式不适用于Java。
.*\n.*\nLast annotated on \w* \d{2}, \d{4}
Below is the java code that does not match the pattern. 以下是与模式不匹配的Java代码。
String regex = ".*\\n.*\\nLast annotated on \\w* \\d{2}, \\d{4}";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
You need to use Pattern and Matcher classses with find
function. 您需要将Pattern和Matcher类与
find
函数一起使用。
String s = "something Line One\n" +
"something Line two \n" +
"Last annotated on December 31, 2014\n" +
"\n" +
"I don't care what is in between. Anything can go here. Any number of lines\n" +
"I don't care what is in between. Anything can go here. Any number of lines\n" +
"\n" +
"Something Line three\n" +
"something line four\n" +
"Last annotated on November 15, 2014";
Matcher m = Pattern.compile(".*[\\r\\n]+.*[\\r\\n]+Last annotated on \\w* \\d{2}, \\d{4}").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
Output: 输出:
something Line One
something Line two
Last annotated on December 31, 2014
Something Line three
something line four
Last annotated on November 15, 2014
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.