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
在这里,我替换了点以匹配除换行以外的所有内容。