Php 数学表达式和逻辑组的正则表达式
我有一个正则表达式:Php 数学表达式和逻辑组的正则表达式,php,regex,Php,Regex,我有一个正则表达式: /(?:\-?[0-9a-zA-Z]+(?:\.?[0-9a-zA-Z]+)?+[\+\-\*\/\<\>\=])+\-?[0-9a-zA-Z]+(?:\.?[0-9a-zA-Z]+)?/ 你可以把这个表达式简化很多。还要注意,在character类中,实际需要转义的唯一字符是-,将其移动到第一个/最后一个字符具有相同的效果。此正则表达式应完成您所追求的目标: [a-z]+|(?:\d+(?:\.\d+)?)|[-+/*=] 搜索连续(至少1个)小写字母字符
/(?:\-?[0-9a-zA-Z]+(?:\.?[0-9a-zA-Z]+)?+[\+\-\*\/\<\>\=])+\-?[0-9a-zA-Z]+(?:\.?[0-9a-zA-Z]+)?/
你可以把这个表达式简化很多。还要注意,在character类中,实际需要转义的唯一字符是
-
,将其移动到第一个/最后一个字符具有相同的效果。此正则表达式应完成您所追求的目标:
[a-z]+|(?:\d+(?:\.\d+)?)|[-+/*=]
搜索连续(至少1个)小写字母字符、连续数字(有小数点的可能性)或任何(大多数?)数学运算。因为这是一个单独的规则,所以每个查找将是一个匹配
PHP用法:
foreach(array('12.3+22-this*4/varable','1+a=3-b') as $equat) {
preg_match_all('~[a-z]+|(?:\d+(?:\.\d+)?)|[-+/*=]~', $equat, $matches);
print_r($matches[0]);
}
PHP演示:
正则表达式演示:u可以使用2个正则表达式(ur regexp用于验证,然后“\d+”用于获取所有组号)。不只是单个字符,我使用字符串,如“string”或数字,如12或12.3,此常规表达式与此类型的输入匹配,但我无法创建用于以后操作的组@chris85@chris85,thx,伙计,这正是我想要的。
foreach(array('12.3+22-this*4/varable','1+a=3-b') as $equat) {
preg_match_all('~[a-z]+|(?:\d+(?:\.\d+)?)|[-+/*=]~', $equat, $matches);
print_r($matches[0]);
}