我们可以在正则表达式模式中使用比较吗?我想检查最近匹配的组是否是greater than
一个数字。这是模式:size=(\d+)
我想看看是否(\d+)>200
返回 true。
问问题
154 次
2 回答
5
您不能使用相同的语法来做到这一点,但是您所追求的可以使用更复杂的表达式来实现,例如:
大于 200:
([1-9]\d+|(?!200)[2-9])\d\d
包括200:
([1-9]\d+|[2-9])\d\d
但是,当您接近其他(和更大的)数字时,它将变得难以管理。
您最好匹配所有数字,然后遍历结果以进行> 200
检查,并删除不符合要求的数字。
注意:上面的正则表达式只是为了表明在纯正则表达式中匹配大于 200 的数字是可能的。但是,不建议这样做,更复杂/可变的数字将不可行。
OP 在评论中提到他们想匹配> 30*1024*1024
,即> 31457280
为了证明为什么正则表达式很痛苦,我编写了所需的模式:
\b((3[1-9][4-9][5-9][7-9][2-9][8-9]\d+)|(3[1-9][4-9][5-9][7-9][3-9]\d{2,})|(3[1-9][4-9][5-9][8-9]\d{3,})|(3[1-9][4-9][6-9]\d{4,})|(3[1-9][5-9]\d{5,})|(3[2-9]\d{6,})|(?!31457280)(4\d{7,}))\b
(不是很漂亮!)
于 2013-08-23T11:36:33.683 回答
0
不,这是不可能的,正则表达式的目的是匹配表达式而不是用它来编程
于 2013-08-23T11:35:12.677 回答