新手php正则表达式问题

时间:2012-08-10 00:36:03

标签: php regex

我有以下代码:

 <?php
        $data="000ffe-fcc9f4 1 000fbe-fccabe";
        $pattern='/([0-9A-F]{6})-([0-9A-F]{6})$/i';
        echo "the pattern we are using is: ".$pattern."<BR>";

        preg_match_all($pattern,$data,$matches, PREG_SET_ORDER );

        print_r($matches[0]);

&GT;

我不明白为什么它没有找到两个匹配的mac地址。

以下是页面上的输出结果:

the pattern we are using is: /([0-9A-F]{6})-([0-9A-F]{6})$/i
Array ( [0] => 000fbe-fccabe [1] => 000fbe [2] => fccabe ) 

我期待元素[0]包含000ffe-fcc9f4和000fbe-fccabe。 你能告诉我我做错了什么吗?

感谢。

1 个答案:

答案 0 :(得分:3)

它找不到两者的原因是因为你的正则表达式末尾有一个$,这意味着它只会匹配字符串末尾的那个模式。

尝试将$pattern更改为/([0-9A-F]{6})-([0-9A-F]{6})/i,这两者都应该匹配。