首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >递归公式中的PHP正则表达式

递归公式中的PHP正则表达式
EN

Stack Overflow用户
提问于 2018-07-05 04:56:09
回答 1查看 34关注 0票数 0

我有一个个人表达:

GREATER (5.26; 7; LESSER (3.00; 6; GREATER (7; 8)))

我想要一个正则表达式,一个函数,它将返回包含括号和分隔符的内容,例如,将“较大”作为表达式传递给正则表达式,该正则表达式将返回带有

代码语言:javascript
复制
[0] => 5.26; 7
[1] => 7; 8

我正在使用这个正则表达式preg_match_all("/\((([^()]*|(?R))*)\)/", $valor, $matches);,但是它不能正确地返回我。

有谁有关于这个正则表达式的线索吗?

EN

回答 1

Stack Overflow用户

发布于 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)))运行

这提供了:

代码语言:javascript
复制
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 中看到效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51180662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档