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 SomeTextSomeText 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 类似于?或者?