Java 正则表达式匹配字符串并排除所有其他内容,直到出现新行

Java 正则表达式匹配字符串并排除所有其他内容,直到出现新行,java,regex,Java,Regex,解决方案在某种程度上解决了我的问题,但需要排除Ordernr之后的任何字符,直到回车(新行) 21Sid1 Ordernr E17222 借 卖方 我正在使用ordernr[\r\n]+([^\n\r]+)匹配上面的ordernr和E17222。 对于以下情况,我也要这样做: 21Sid1 Ordernr跳过所有内容直到新行 E17222 借 卖方 基本上在找到Ordernr时排除所有内容,直到找到新行并抓取下一行 /Ordernr.[\r\n]+(.*)/g 因为,*匹配除行终止符之外的所有内

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

  • 21Sid1
  • Ordernr
  • E17222
  • 卖方
  • 我正在使用ordernr[\r\n]+([^\n\r]+)匹配上面的ordernrE17222。 对于以下情况,我也要这样做:

  • 21Sid1
  • Ordernr跳过所有内容直到新行
  • E17222
  • 卖方
  • 基本上在找到Ordernr时排除所有内容,直到找到新行并抓取下一行

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

    因为,
    *
    匹配除行终止符之外的所有内容,所以我们在Ordernr之后匹配所有内容,除了使用
    *
    的新行之外,然后是新行,我们再次使用
    (*)
    捕获下一行的所有内容

    现场演示

    以下是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");
    }
    
    输出:

    第一组:E17222

    检查结果

    编辑

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

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

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

    Java或Javascript?使用选项来澄清/纠正您的问题(如更新标记)。这是针对Java的。更新!我想匹配Ordernr并跳过所有内容,直到行结束符,然后在下一行捕获所有内容目前,它与Ordernr行上的所有内容都匹配。我们可以只匹配Ordernr并跳过所有内容直到新行。它不是匹配所有内容,在正则表达式中有一个叫做捕获的东西,用java签出代码和输出:这就是正在发生的事情。我正试图在JIRA的一个现场处理器中使用它。当我在JAVA和JavaScript的实时演示站点上尝试它时,它就可以工作了。然而,当我在插件上尝试它时,它捕获了最后一行。它之所以这样做是因为点匹配所有用法。所以基本上。*一直匹配到最后,并捕获最后一行而不是下一行。有什么办法可以解决这个问题吗?这是屏幕截图,你在说什么插件?它是JIRA的JEMH,用于正则表达式。