为什么我的正则表达式拒绝撇号?

时间:2015-05-10 19:17:53

标签: php regex apostrophe

我制作的正则表达式应该匹配所有内容:[[First example]][[I'm an example]]

不幸的是,由于撇号,它与[[I'm an example]]不匹配。

这是:

preg_replace_callback('/\[\[([^?"`*%#\\\\:<>]+)\]\]/iU', ...)

允许使用简单的撇号(&#39;),所以我真的不明白它为什么不起作用。

有什么想法吗?

编辑:以下是我使用此正则表达式之前发生的事情

// This match something [[[like this]]]
$contents = preg_replace_callback('/\[\[\[(.+)\]\]\]/isU',function($matches) {
    return '<blockquote>'.$matches[1].'</blockquote>';
}, $contents);

// This match something [[like that]] but doesn't work with apostrophe/quote when
// the first preg_replace_callback has done his job
$contents = preg_replace_callback('/\[\[([^?"`*%#\\\\:<>]+)\]\]/iU', ..., $contents);

2 个答案:

答案 0 :(得分:0)

试试这个:

$string = '[[First example]]';
$pattern = '/\[\[(.*?)\]\]/';
preg_match ( $pattern, $string, $matchs );
var_dump ( $matchs );

答案 1 :(得分:0)

您可以使用此正则表达式:

\[\[.*?]]

<强> JSFiddle

Php 代码

$re = '/\[\[.*?]]/'; 
$str = "not match this but [[Match this example]] and not this"; 

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

顺便说一句,如果要捕获括号内的内容,则必须使用捕获组:

\[\[(.*?)]]