Java正则表达式数学测试

时间:2014-08-04 17:10:02

标签: java regex

我的文字是

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)

谢谢!

2 个答案:

答案 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)