Java正则表达式数学测试

标签 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)

谢谢!

最佳答案

尽管这不仅仅是一个正则表达式,但它会进行检查。数字应该是“理智的”,否则会抛出异常。

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/

相关文章:

Python 特殊字符转义

Java 替换 - 多项选择

php - preg_replace this : {{1}{2}{3}{. .}} -- 可能是一个简单的 PHP/preg_replace/RegEx 问题,但我真的很难过

python - 如何为 "not"、 "no"和 "never"之后的字符串中的否定词添加标签

java - 使用 Tomcat,Google Chrome 无法打开 localhost :8080 but Safari can

java - 仅将前几百个样本从输入流读入字节数组(其余为零)

java - XmlBeans 与 Axis for Web Service 客户端 stub

java - Spring 安全中的 Oauth2 客户端

php - 用于查找 <a> 和 </a> 标记之间所有内容的正则表达式

java - 使用 LinkedBlockingQueue 对多线程 java 程序足够好吗?