我不确定这是否可能,但......
对于字符串
2-3
是否可以构造一个正则表达式来检查第一部分是否小于第二部分?
同样,是否可以构造一个正则表达式来检查第一部分是否大于第二部分?或者如果他们是平等的?
我知道我可以使用爆炸并手动完成,但我希望有一个更优雅的解决方案。
有什么想法吗?
谢谢。
答案 0 :(得分:2)
你不能只使用正则表达式,你需要使用正则表达式将字符串解析为单独的部分,然后使用语言逻辑来执行其余部分。例如。
$string = "2-3";
$regexp = "/([0-9]+)[+-\/\*]([0-9]+)/";
preg_match($regexp, $string, $matches);
解析字符串后
if ($matches[1] > $matches[2]) { }
答案 1 :(得分:0)
正则表达式的目的只是为了匹配某些模式,它包含完全匹配的运算符,使用字符串。
如果比较数字,则使用一些数学运算符,因此应使用编程语言执行此类操作。为什么?因为数学运算应该适用于int
,float
等类型的数据。
Regex将帮助您从字符串中提取所需的数据 - >使用默认工具来利用数据。
答案 2 :(得分:0)
如果字符串始终采用该格式,则实际上不需要RegEx
$string = "2-3";
$firstGreater = (int) $string[0] > (int) $string[2];