在preg_match_all

时间:2016-01-23 07:34:36

标签: php regex

我想以这种格式解析一个字符串++ VAR ++。

我尝试过preg_match_all(“++。*?++”,$ input,$ matches);但失败了。 我错过了什么?

2 个答案:

答案 0 :(得分:0)

你错过了逃脱+并且忘了添加php分隔符。

preg_match_all('~\+\+.*?\+\+~', $input, $matches);

答案 1 :(得分:0)

您的正则表达式缺失 regex delimiters 。此外,+是一个特殊的正则表达式元字符(一个或多个量词),它必须被转义才能被视为文字字符。

如果您只有内的字母数字字符匹配加上符号,则可以使用

preg_match_all('~(?<!\+)\+\+(\w+)\+\+(?!\+)~', $txt, $matches);

this regex demo

请参阅IDEONE demo

$re = '~(?<!\+)\+\+(\w+)\+\+(?!\+)~'; 
$str = "I have ++VAR++ and  +++++++++++ and +++text+++++ and ++ANOTHER_VAR++."; 
preg_match_all($re, $str, $matches);
print_r($matches);