这是查找会话ID的正则表达式:“(?< =())([0-9] *)(?=(。* ABC。 DEEP。 [1- 9] s))“和输出是:
ID TYPE USER IDLE 63494 ABC DEEP 3 s -> 70403 ABC DEEAP 0 s 82446 ABC DEEOP 52 min 27 s
在myregexp.com/signedJar.html中,这个正则表达式正常。但是当我尝试使用Java时,它无法获得输出。请找到代码段:
FrameworkControls.regularExpressionPattern = Pattern.compile("(?<=( ))([0-9]*)(?=(.*ABC.*DEEP.*[1-9] s))");
String deepak = "\n" +
"\n" +
" ID TYPE USER IDLE\n" +
"\n" +
" 63494 ABC DEEP 3 s\n" +
" -> 70403 ABC DEEAP 0 s\n" +
" 82446 ABC DEEOP 52 min 27 s\n";
FrameworkControls.regularExpressionMatcher = FrameworkControls.regularExpressionPattern.matcher(deepak);
if (FrameworkControls.regularExpressionMatcher.find()) {
String h = FrameworkControls.regularExpressionMatcher.group().trim();
System.err.println(h);
}
“FrameworkControls.regularExpressionMatcher.find()”返回true。但是h变量总是空的。任何人都可以告诉我,我可能做错了。
预期产出:63494
答案 0 :(得分:0)
我认为您正在尝试打印USER DEEPAK的ID。如果是,那么您的代码将是,
Pattern p = Pattern.compile("(?<= )[0-9]+(?=\\s*ABC\\s*DEEP\\s*[0-9]\\s*s)");
Matcher m = p.matcher(deepak);
while (m.find()) {
System.out.println(m.group());
}
答案 1 :(得分:0)
我会使用以下表达式:
"^\\s+(\\d+)\\s+(\\w+)\\s+(\\w+).+\$"
然后
group(1) is ID
group(2) is TYPE
group(3) is USER
表达非贪婪,因此如果您不需要,可以删除最后两组。