您能否帮助使用以下正则表达式:我想匹配\[\[\.\\{0,}(.)?\.\]\]
,所以:
[
后跟[
和.
,然后是\
(0或更多)的可能数量,然后是单个字符,然后{{1接下来是两个.
&#39>
这是为]
找到[[.g.]]
,' [[。\ g。]]'作为g
,g
作为[[.\\g.]]
。我有以下代码(例如):
g
这会找到preg_match_all( '/\[\[\.(.)?\.\]\]/', "[[.g.]]", $matches );
作为匹配项。如果我想忽略转义字符,我会将我的模式更改为g
,所以:
\[\[\.\\{0,}(.)?\.\]\]
我希望preg_match_all( '/\[\[\.\\{0,}(.)?\.\]\]/', "[[.\\\\g.]]", $matches );
回来,但我什么都没得到。正则表达式现在表示:两个g
,后跟一个[
,任意数量的转义字符,然后是我们要查找的字符,后跟.
。我做错了什么?
答案 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