2011-01-09 235 views
1

我需要一个正则表达式来检查一个数值是否大于另一个值。 非常像我会写(if 10>8) ...正则表达式:如果数字大于则...匹配?

显然,我的代码片段不会发生,我缺乏正则表达式自己排除它的经验。这可能与正则表达式有关吗?

^[1-9]+[0-9]+$ 

谢谢!

+3

你为什么要用正则表达式来做到这一点? – 2011-01-09 16:15:27

+0

您能否详细说明您必须处理的数据? – Ikke 2011-01-09 16:18:05

回答

3

如果我正确理解你的问题,你想要一个正则表达式匹配任意长度的连续数字,其中第二个大于第一个。这与regexen无法处理。这显然不是一种常规的语言,没有任何常见的扩展(反向引用,递归引用)足够强大来改变它。

在一些正则表达式实现(例如Perl)中,可以将主机语言的代码嵌入到正则表达式中。在这种情况下,您当然可以将谓词num1 < num2作为Perl代码嵌入,但我认为这不算是一个正则表达式的解决方案。

7

对于正则表达式来说,这不是一个好问题。提取数字并进行数字比较。

1

那么如果我理解正确,你必须在.htaccess或类似的东西里面比较这些数字。 有一个愚蠢的和unhealty方式做比较,并要求评估字符串中的数字: “^ [0-9] [1-9] [0-9] $”匹配,如果你比较“5 12 “这样你就可以明白,1,5小于12

相比长度相同的数是不是疯了只针对数字100

我想如果你能更好地解释这是您的上下文(iMacros的下。 htaccess ...)有人可以建议一个更好的方式来做到这一点。

0

这不是直接用正则表达式来完成的。您正在编程的语言可能允许扩展regexp语法来插入任意代码。例如在Perl中:

$_ = '54 55'; 
say 'matched' if /\A(\d\d) (\d\d)(?(?{$1 >= $2})(*FAIL))\z/; 

成功但56 55没有。在https://stackoverflow.com/a/30936388/626804我进一步解释一下。

这是否是好品味还是一个好主意是另一回事 - 但在Perl中,如果您真的想要,可以将这种比较融入到所谓的“正则表达式”匹配中。