在Java中有点令人困惑的正则表达式

时间:2013-10-21 12:49:31

标签: java regex

日志文件中有一个字符串:

'AUR   HALAA /PART="CMF1_SAS_PROJECT" /ROLE="VR_ANALYST" /TY=C /CAP=S /DEL' (S) 

'AUR and /ROLE=""是一个不变的部分

HALAA and VR_ANALYST是输入

我的正则表达式是:"^'AUR (\\w+) .*? /ROLE=\"(\\w+)\".*$";

但它无法正常工作。有人可以告诉我这句话的正确正则表达吗?

2 个答案:

答案 0 :(得分:2)

'AUR之后似乎有多个空格 - 你需要允许正则表达式匹配它:

"^'AUR +(\\w+) .*? /ROLE=\"(\\w+)\".*$";

您应该使用.find()方法,而不是matches(),因为您的字符串(如果它来自日志文件)可能在末尾包含换行符,并且.*将不匹配那。另外,在这种情况下,锚点是不必要的。所以,试试这个:

Pattern regex = Pattern.compile("^'AUR +(\\w+) .*? /ROLE=\"(\\w+)\".*$");
Matcher regexMatcher = regex.matcher(strLine);
if (regexMatcher.find()) {
    first = regexMatcher.group(1);
    second = regexMatcher.group(2); 
} 

答案 1 :(得分:0)

试试这个..

^'AUR\s*\w*.*/ROLE="\w*".*