使用递归正则表达式来打破列表

时间:2017-11-08 13:57:19

标签: php regex

我第一次尝试使用递归正则表达式来拆分列表中的项目,并且我无法获得多个匹配项。

我有一个字符串,例如array(string,boolean)。我想从内部提取stringboolean,因此请使用此正则表达式:

array\((?:([a-z]+)[,\S]*)(?:(?R)|\))

使用regex101.com进行测试时,我成功匹配string,但未成功匹配boolean。我试图围绕一些parens四处移动,以防我分组的方式错误。

我喜欢关于我出错的地方的一些建议吗?或者我误解了递归正则表达式是如何工作的?

帮助:https://regex101.com/r/Vkmvr0/2

1 个答案:

答案 0 :(得分:0)

如果我猜对了,您本来可以选择的另一种选择可能是使用环顾四周,例如使用类似于以下内容的表达式:

(?<=\(|,)[^\r\n,)]*(?=,|\))

  

如果您想探索/简化/修改表达式,可以   在右上角的面板上进行了说明   regex101.com。如果您愿意,   也可以在this link中观看它的匹配方式   针对一些样本输入。