我想检查字符串的有效性,然后尝试使用正则表达式将其拆分。
正则表达式应将输入分组为";"并且每个组都应该是一个键值对,但我的正则表达式组输入错误,我的正则表达式问题在哪里?
这是我使用正则表达式的函数:
public static boolean verify(String str) {
String pattern = "^(Eval:)+((.+?)=(([^;]*$)))+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
if(m.matches()){
return true;
}else{
return false;
}
}
有效示例:
评估:标签= VAL; TAG2 =
评估:标签= VAL; TAG2 = val2的
评估:标签=
评估:标签=; TAG2 =
示例无效:
评估:标签=; TAG2 =;
评估:标签; TAG2 =;
评估:标签= TAG2 =
答案 0 :(得分:1)
这有效:
^Eval:((([^=;]+)=([^=;]*));?)+(?<!;)$
它与您的尝试基本相同,但最后使用;
的负面后视来阻止后续分号。
Eval:
([^=;]+)=
([^=;]*)
((([^=;]+)=([^=;]*));?)+
(?<!;)$