【发布时间】:2016-06-11 11:14:37
【问题描述】:
我有一个遵循这种模式的字符串[:it]Stringa in italiano[:en]String in english。
我正在尝试使用preg_match_all() 来捕获语言环境和相关字符串,即:
[1] => 'it',
[2] => 'en',
...
[1] => 'Stringa in italiano',
[2] => 'String in english'
我使用的正则表达式"/\[:(\w+)](.+?)(?=\[:\w+])/" (https://regex101.com/r/eZ1gT7/400) 只返回第一组数据。我做错了什么?
【问题讨论】:
-
你需要字符串结尾,即
$..\[:(\w+)\](.+?)(?=\[:\w+\]|$)..regex101.com/r/eZ1gT7/401 -
您可以将
preg_split与\[:(\w+)\]和PREG_SPLIT_DELIM_CAPTURE标志一起使用。它可能更具可读性。
标签: php regex preg-match-all