日志文件中有这样一个字符串:
'AUR HALAA /PART="CMF1_SAS_PROJECT" /ROLE="VR_ANALYST" /TY=C /CAP=S /DEL' (S)
'AUR 和/ROLE=""
是常量部分
HALAA 和 VR_ANALYST
是输入
我的正则表达式是:"^'AUR (\\w+).*?/ROLE=\"(\\w+)\".*$";
但它无法正常工作。有人可以告诉我这句话的正确正则表达式吗?
最佳答案
'AUR
之后似乎有多个空格 - 您也需要允许正则表达式与之匹配:
"^'AUR +(\\w+) .*? /ROLE=\"(\\w+)\".*$";
您应该使用 .find()
方法,而不是 matches()
,因为您的字符串(如果来自日志文件)可能在末尾包含换行符,并且 .*
不会匹配。另外,在这种情况下就不需要 anchor 了。所以,试试这个:
Pattern regex = Pattern.compile("^'AUR +(\\w+) .*? /ROLE=\"(\\w+)\".*$");
Matcher regexMatcher = regex.matcher(strLine);
if (regexMatcher.find()) {
first = regexMatcher.group(1);
second = regexMatcher.group(2);
}
关于java - java中有点令人困惑的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19495000/