This解决方案在某种程度上解决了我的问题,但是需要在Ordernr之后排除任何字符,直到回车(换行)


21Sid1
Ordernr
E17222
通过
卖方


我正在使用ordernr [\ r \ n] +([[^ \ n \ r] +)来匹配上述ordernr和E17222。
对于以下情况,我想做同样的事情:


21Sid1
Ordernr跳过所有内容到新行
E17222
通过
卖方


基本上排除找到Ordernr时的所有内容,直到出现新行并抓住下一行

最佳答案

应该这样做:

/Ordernr.*[\r\n]+(.*)/g

由于.*匹配除行终止符之外的所有内容,因此我们要匹配Ordernr之后的所有内容,除了使用.*然后换行的新行,然后使用(.*)捕获下一行的evrything。

现场演示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

编辑

要使此正则表达式与您的点匹配所有约束,请尝试以下操作:

/Ordernr[^\n\r]*[\r\n]+([^\n\r]*)/g


在这里,我替换了点以匹配除换行以外的所有内容。

10-07 19:18