This解决方案在某种程度上解决了我的问题,但需要在Ordernr之后排除任何字符,直到回车(新行)
我正在使用 ordernr [\ r \ n] +([^ \ n \ r] +) 来匹配 ordernr 和 E17222 以上。 我想对下面的情况做同样的事情:
在找到Ordernr之前,基本上排除所有内容,直到换行并抓住下一行
答案 0 :(得分:1)
这应该做:
/Ordernr.*[\r\n]+(.*)/g
因为,.*
匹配除了行终结符之外的所有内容,所以我们在 Ordernr 之后匹配所有内容,除了使用.*
的新行,然后是新行并再次捕获使用(.*)
在下一行进行改编。
现场演示here
以下是Java中的示例代码:
String line = "21Sid1\nOrdernr Skip everything upto new line\nE17222\nBy\nSeller";
Pattern pattern = Pattern.compile("Ordernr.*[\r\n]+(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
System.out.println("group 1: " + matcher.group(1));
}else{
System.out.println("No match found");
}
输出:
第1组:E17222
检查结果here。
修改强>
要使此正则表达式与点匹配所有 consraint一起使用,请尝试以下操作:
/Ordernr[^\n\r]*[\r\n]+([^\n\r]*)/g
这里我已经取代了dot以匹配除新行之外的所有内容。