Java正则表达式数学测试

Java正则表达式数学测试,java,regex,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=

我有一段文字是

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)

谢谢

这个——尽管不仅仅是正则表达式——进行检查。数字应为“正常”或引发异常

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) );
}
试试这个:

    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]));

您必须编写两个条件,一个是检查格式(检查第一个SOP),然后进行数学计算(检查第二个SOP)

java正则表达式不进行任何计算。这些不是正则表达式是一个按位and运算。第一页的结果=2。。。是值0(0x02&0xC8=0x00)。使用正则表达式匹配片段,然后编写函数进行测试。有些人在遇到问题时会认为“我知道,我将使用正则表达式”。现在他们有两个问题。-jwz@ElliottFrisch这是一个非常好的引用。感谢您的回答劳恩,如果您不想“根据模式匹配整个区域”(即page=xx&items=xx只是文本的一部分),可以将mat.matches()替换为mat.find()