我必须解析程序的输出来搜索错误。错误表示为:
[(FieldName/Value) = (短语/ What is Up John Carl? ) 失败的规则字母数字] [(FieldName/Value) = ( newLabel / Óscar's IPad ) 失败的规则非法字符]
每行可能有多个错误,对于每个错误,我都想检索粗体字/句子。为了做到这一点,我正在创建一个正则表达式,如下所示:
static String s1 = Pattern.quote("[(FieldName/Value) = (");
static String s2 = Pattern.quote(") failed rule");
static String s3 = Pattern.quote("]");
static Pattern p = Pattern.compile(s1 + "(\\w+)/(.+)" + s2 + "(.+)" + s3);
while (matcher.find()) {
String token = matcher.group(1);
sb.append("#");
sb.append(token);
token = matcher.group(2);
sb.append("#");
sb.append(token);
token = matcher.group(3).trim();
sb.append("#");
sb.append(token);
}
但输出是:
#phrase#What is Up John Carl?) failed rule alphanumeric] [(FieldName/Value) = (newLabel/Óscar's IPad#illegalchars
所以它不会返回两场比赛,只是一场。它将第二组与字符串的其余部分匹配,而不是停在第一组"failed rule"
。我想这是由于(.+)
模式中的第一个,但问题是任何东西都可以进入那里,所以我需要(.+)
. 任何想法如何做到这一点?