Почему мое регулярное выражение отвергает апострофы?

Я делаю регулярное выражение, которое должно соответствовать всему так: [[First example]] или же [[I'm an example]],

К сожалению, это не соответствует [[I'm an example]] из-за апострофа.

Вот :

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

Простые апострофы (‘) разрешены, поэтому я действительно не понимаю, почему это не работает.

Есть идеи ?

РЕДАКТИРОВАТЬ: Вот что происходит, прежде чем я использую это регулярное выражение

// 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);

-1

Решение

попробуй это:

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

Другие решения

Вы можете использовать это регулярное выражение:

\[\[.*?]]

Рабочая демонстрация

Php код

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

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

Кстати, если вы хотите захватить содержимое в квадратных скобках, вы должны использовать группы захвата:

\[\[(.*?)]]
0

По вопросам рекламы [email protected]