选项样式字符串的正则表达式

时间:2010-02-07 18:31:07

标签: regex

另一个陷入Regex土地...... 有以下一行

单词“Blabla” - 选项1:Bla di Bla -Option2:Ha

我想在最后匹配2个“选项”,这样我就有了这些组:

  • 选项1
  • Bla di Bla
  • Option2

到目前为止我所拥有的是: 的 - (\ W +):(?+)(?= - | $)

我认为应该是这样的:“一个连字符,后跟一个单词,后跟一个冒号,然后是一些字符,后面跟一个连字符或换行符,不消耗任何两个”

但不知怎的,它出错了,只会捕获前两组。我哪里错了?

1 个答案:

答案 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
        )

)