使用正则表达式搜索多个元素

时间:2014-12-26 15:59:54

标签: php regex

如何检查字符串中可变数量的元素?

[keyword1|keyword2|keyword3]
[keyword1|keyword2]

...或超过三个关键字。这只适用于三个要素:

preg_match("/^\[(.*)\|(.*)\|(.*)\]$/",$string, $matches)

编辑:如何在变量中获取捕获的关键字?即:

matches[1] = keyword1
matches[2] = keyword2
matches[3] = keyword3

2 个答案:

答案 0 :(得分:2)

您可以使用:

(?:^\[(?=[^][|]*(?:\|[^][|]*)*\])|(?!^)\G)([^][|]*)(?:[]|])

Regular expression visualization

DEMO

详细解释了这种技术 HERE

答案 1 :(得分:1)

使用此功能,3个及更多。

^\[[^|\n]*(?:\|[^|\n]*){2,}\]$

DEMO

超过3,

^\[[^|\n]*(?:\|[^|\n]*){3,}]$

DEMO

你可以通过\G锚,

这样做
(?:^\[|\G)\|?([^\n|\]]+)(?=[\]|])

使用\G锚点进行连续字符串匹配。

DEMO