1

我需要一个正则表达式来匹配以下内容:

{RandomName Option="value"}
{AnotherRandomString AnotherOption="Another value" Option1="Woot woot"}

基本上,它以 { 和随机字符串开头的任何内容,后跟一个空格,然后是带有和 = 符号的名称-值对的列表以及值周围的引号。到目前为止,我能到达的最远距离在下面,但我认为它不是很接近:

preg_match_all(
        '#\{(.*?)\=(.*?)\}#ims',
        $this->search_string,
        $the_matches
    );
4

2 回答 2

3

这是一个更好的正则表达式,可以更具体地匹配您的情况:

#\{[^{}]+\=[^{}]+\}#ims

这假设}内部永远不会有一个紧括号。

编辑添加例外{

于 2012-03-06T20:56:22.907 回答
1

这个怎么样?它为起始标签创建一个编号组,为所有名称/值对创建一个,然后为每个单独的名称/值对创建一个。

{(\w+)\s+((\w+=".*?"\s*)+)}
于 2012-03-06T21:10:25.113 回答