【发布时间】:2017-09-25 01:43:37
【问题描述】:
我想检查一个字符串的有效性,然后尝试使用正则表达式对其进行拆分。
正则表达式应按“;”对输入进行分组并且每个组应该是一个键值对,但是我的正则表达式组输入错误,我的正则表达式的问题在哪里?
这是我使用正则表达式的函数:
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;
}
}
有效示例:
评估:tag=val;tag2=
评估:tag=val;tag2=val2
评估:标签=
评估:tag=;tag2=
无效示例:
评估:tag=;tag2=;
评估:tag;tag2=;
评估:tag=tag2=
【问题讨论】:
-
你忘了问问题。
-
@shmosel 你是对的!
-
Eval:tag=;tag2= -
顺便说一句,你可以用
str.matches("^(Eval:)+((.+?)=(([^;]*$)))+")替换整个方法 -
您正在寻找的正则表达式非常复杂。你确定 rfc6265 还没有 Java 库来处理这个问题吗?