Regex 如何通过正则表达式匹配此表达式?

Regex 如何通过正则表达式匹配此表达式?,regex,Regex,如何匹配如下所示的行: SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText. SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText. SomeText

如何匹配如下所示的行:

 SomeText SomeText SomeText SomeText SomeText 
SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.
SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.
SomeText SomeText :
SomeText SomeText SomeText SomeText SomeText SomeText  (BlockID: 12345,TestCaseID: 12345, 1)
我想要的是之前的整个部分(BlockID:12345,TestCaseID:12345,1) 我想要的另一部分是BlockID的12345,另一部分是TestCaseID

我尝试了以下方法来标记所有行,但我不知道更多:

(?:[^\n]*(\n*))+.*

BlockID之前的所有内容:

([\S\s]*)(?=\(BlockID)
来自BlockID的12345:

(?:BlockID: )([0-9]{5})
12345,来自TestCaseID的1:

(?:TestCaseID: )([0-9]{5}, [0-9])

根据您实际输入的类型,我可以推荐如下内容

(.+)\\(BlockID: (\\d+),TestCaseID: (\\d+), 1\\)
这意味着:

  • 捕获长度为1或更多的字符序列(包括新行,因为我们将添加
    DOTAL
    标志)
  • 在到达
    块ID:
    之前
  • 在这一点上捕获一个由1个或多个数字组成的序列
  • 后跟
    ,TestCaseID:
  • 然后再次捕获1个或多个数字的序列
  • 后跟
    ,1)
这就是它的作用:

public class Regex {

    public static void main(String[] args) {

        String text = " SomeText SomeText SomeText SomeText SomeText \r\n" + 
        "SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.\r\n" + 
        "SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.\r\n" + 
        "SomeText SomeText :\r\n" + 
        "SomeText SomeText SomeText SomeText SomeText SomeText  (BlockID: 12345,TestCaseID: 12345, 1)";

        Pattern p = Pattern.compile("(.+)\\(BlockID: (\\d+),TestCaseID: (\\d+), 1\\)", Pattern.DOTALL);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
            System.out.println(m.group(3));
        }
    }
}
输出:

SomeText SomeText SomeText SomeText SomeText
SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.
SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText SomeText.
SomeText SomeText:
SomeText SomeText SomeText SomeText SomeText
12345
12345

类似于?或者?