preg_match不捕获内容

时间:2011-11-25 22:02:34

标签: php preg-match match preg-match-all

我的preg_match出了什么问题?

preg_match('numVar("XYZ-(.*)");',$var,$results);

我希望从此处获取所有 CONTENT

numVar( “XYZ-的 CONTENT ”);

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我认为这是PHP?如果是这样,您的代码就会出现三个问题。

  1. PHP的PCRE函数要求使用分隔符格式化正则表达式。通常的分隔符是/,但您可以使用任何匹配的对。
  2. 您没有在正则表达式中转义括号,因此您不匹配(字符,而是创建RE组。
  3. 您应该在RE中使用非贪婪匹配。否则,numVar("XYZ-CONTENT1");numVar("XYZ-CONTENT2");之类的字符串将匹配两者,而您的“内容”组将为CONTENT1");numVar("XYZ-CONTENT2
  4. 试试这个:

    $var = 'numVar("XYZ-CONTENT");';
    preg_match('/numVar\("XYZ-(.*?)"\);/',$var,$results);
    
    var_dump($results);
    

答案 1 :(得分:1)

将示例字符串粘贴到http://txt2re.com并查看PHP结果。

它将显示您需要转义对正则表达式引擎具有特殊含义的字符(例如括号)。

答案 2 :(得分:0)

你应该逃避一些角色:

preg_match('numVar\("XYZ-(.*)"\);',$var,$results);

答案 3 :(得分:0)

preg_match("/XYZ\-(.+)\b/", $string, $result);
print_r($result[0]); // full matches ie XYZ-CONTENT
print_r($result[1]); // matches in the first paren set (.*)
相关问题