列分隔值的正则表达式(PHP)

列分隔值的正则表达式(PHP),php,regex,Php,Regex,我有以下数据集,按列组织: startword: blablabla: blablabla: 123456 123456 123456 important phrase 1 important phrase 2 important phrase 3 我想把重要短语放在不同的匹配中。目前,我有以下正则表达式(工作正常,请参阅): 目前,我在PHP(使用两个空格作为分隔符)中以编程方

我有以下数据集,按列组织:

startword:          blablabla:              blablabla:
123456              123456                  123456
important phrase 1  important phrase 2      important phrase 3
我想把
重要短语
放在不同的匹配中。目前,我有以下正则表达式(工作正常,请参阅):


目前,我在
PHP
(使用两个空格作为分隔符)中以编程方式拆分行,但我想知道是否有更好的方法将匹配项直接分组(一些
\G
magic?)

您可以使用这个正则表达式捕获所有匹配项:

(?:^startword:(?:.*\R){2}\K|(?!^)\G\h{2,})(.+?(?=\h{2}|$))

  • \G
    在上一个匹配的末尾或第一个匹配的字符串的开头断言位置
  • Lookahead
    (?=\h{2}|$)
    确保前面有两个或多个水平空格,或者在捕获的文本之后到达行尾

展示最终输出(结果)的外观,感谢您,一如既往地精彩:-)
match1 => important phrase 1
match2 => important phrase 2
match3 => important phrase 3
(?:^startword:(?:.*\R){2}\K|(?!^)\G\h{2,})(.+?(?=\h{2}|$))