regexp查找MySQL regexp中的所有特殊字符

时间:2017-11-07 17:15:51

标签: php regex

您能否帮助使用以下正则表达式:我想匹配\[\[\.\\{0,}(.)?\.\]\],所以:

[后跟[.,然后是\(0或更多)的可能数量,然后是单个字符,然后{{1接下来是两个.&#39>

这是为]找到[[.g.]],' [[。\ g。]]'作为gg作为[[.\\g.]]。我有以下代码(例如):

g

这会找到preg_match_all( '/\[\[\.(.)?\.\]\]/', "[[.g.]]", $matches ); 作为匹配项。如果我想忽略转义字符,我会将我的模式更改为g,所以:

\[\[\.\\{0,}(.)?\.\]\]

我希望preg_match_all( '/\[\[\.\\{0,}(.)?\.\]\]/', "[[.\\\\g.]]", $matches ); 回来,但我什么都没得到。正则表达式现在表示:两个g,后跟一个[,任意数量的转义字符,然后是我们要查找的字符,后跟.。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您可能无法使用正则表达式进行匹配,因为两个反斜杠表示一个(由于转义),请尝试此操作(使用两个反斜杠,总共4个):

$re = '/\[\[\.\\\\{0,}(.)?\.\]\]/m';
$str = '[[.g.]]
[[.\\g.]]
[[.\\\\g.]]
[[.\\\\\\\\g.]]';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

现场演示here