我有一段文字
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) );
}
关于Java正则表达式数学测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25124001/