preg match删除先前组中捕获的

时间:2019-06-19 08:22:35

标签: php preg-match

我需要将字符串分成多个部分。匹配的模式不能出现在其他匹配的组中。字符串示例:

baranything
baranythingbaz

预期输出:

array(
    0 => baranything
    1 => bar
    2 => anything
    3 =>
)
array(
    0 => baranything
    1 => bar
    2 => anything
    3 => baz
)

最简单的解决方案可能类似于(bar)(.*)(baz|),但是它将所有剩余的字符串放入[2]元素中,并且没有捕获到“ baz”。

1 个答案:

答案 0 :(得分:1)

您可以使用

^(bar)(.*?)(baz|$)

请参见regex demoregex graph

enter image description here

详细信息

  • ^-字符串的开头
    • (bar)-第1组:bar
    • (.*?)-第2组:除换行符以外的任何0+个字符,并且尽可能少
    • (baz|$)-baz或字符串结尾。