我有一个个人表达:
GREATER (5.26; 7; LESSER (3.00; 6; GREATER (7; 8)))
我想要一个正则表达式,一个函数,它将返回包含括号和分隔符的内容,例如,将“较大”作为表达式传递给正则表达式,该正则表达式将返回带有
[0] => 5.26; 7
[1] => 7; 8
我正在使用这个正则表达式preg_match_all("/\((([^()]*|(?R))*)\)/", $valor, $matches);
,但是它不能正确地返回我。
有谁有关于这个正则表达式的线索吗?
发布于 2018-07-05 05:45:43
我会推荐regex /(?<=GREATER\s\()([\d.]+)(?:;\s)([\d.]+)/g
。
详细分析一下:
(?<=GREATER\s\()
-在GREATER (
([\d.]+)
上执行正向回溯-获取后面的任何数字和点,并对them(?:;\s)
进行分组-进程,但不对进程和space([\d.]+)
进行分组-获取后面的任何数字和点,并对它们进行分组需要全局标志(g
)才能确定每个集合的目标。
针对字符串GREATER (5.26; 7; LESSER (3.00; 6; GREATER (7; 8)))
运行
这提供了:
array(3
0 => array(2
0 => 5.26; 7
1 => 7; 8
)
1 => array(2
0 => 5.26
1 => 7
)
2 => array(2
0 => 7
1 => 8
)
)
这允许您访问第一个分组中单词GREATER
之前的“组合”两个集合,此外,还可以在后续分组中分隔集合(允许轻松访问)。
这可以在PHPLiveRegex 中看到效果。
https://stackoverflow.com/questions/51180662
复制相似问题