我的文字是
page=2&items=200
page=3&items=400
page=4&items=600
..
显然,这里存在一个数学公式:
items = ( page - 1 ) * 200
我想知道正则表达能够检测出来吗?
page=\d+&items=($1-1)*200? (pyseudo)
那么任何与该数学方程不匹配的行都会失败?
page=3&items=400 (success)
page=3&items=450 (fail)
谢谢!
答案 0 :(得分:2)
这 - 虽然不只是一个正则表达式 - 做检查。数字应该是#34;理智的#34;或抛出异常。
private static Pattern pat = Pattern.compile( "page=(\\d+)&items=(\\d+)" );
private static boolean check( String s ){
Matcher mat = pat.matcher( s );
return mat.matches() &&
(Integer.valueOf( mat.group(1) ) - 1)*200 ==
Integer.valueOf( mat.group(2) );
}
答案 1 :(得分:0)
试试这个:
String sampleString = "page=2&items=200";
String [] splitArray = sampleString.split("page=|\\&items=");
System.out.println(sampleString.matches("page=\\d+\\&items=\\d+"));
System.out.println((Integer.parseInt(splitArray[1]) - 1) * 200 == Integer.parseInt(splitArray[2]));
您必须编写2个条件,一个用于检查格式(检查第一个SOP)然后进行数学运算(检查第二个SOP)