另一个陷入Regex土地...... 有以下一行
单词“Blabla” - 选项1:Bla di Bla -Option2:Ha
我想在最后匹配2个“选项”,这样我就有了这些组:
到目前为止我所拥有的是: 的 - (\ W +):(?+)(?= - | $)
我认为应该是这样的:“一个连字符,后跟一个单词,后跟一个冒号,然后是一些字符,后面跟一个连字符或换行符,不消耗任何两个”
但不知怎的,它出错了,只会捕获前两组。我哪里错了?
答案 0 :(得分:1)
这是正确的。你没有提到你正在使用的语言,但这是它在PHP中的工作原理:
$text = 'Word "Blabla" -Option1:Bla di Bla -Option2:Ha';
preg_match_all('/-(\w+?):(.+?)(?=-|$)/', $text, $matches, PREG_SET_ORDER);
print_r($matches);
产生:
Array
(
[0] => Array
(
[0] => -Option1:Bla di Bla
[1] => Option1
[2] => Bla di Bla
)
[1] => Array
(
[0] => -Option2:Ha
[1] => Option2
[2] => Ha
)
)