Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数学表达式和逻辑组的正则表达式_Php_Regex - Fatal编程技术网

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]);
}