2016-01-23 2 views
1

Я хотел бы проанализировать строку в этом формате ++ VAR ++.Включая знак плюса в preg_match_all

Я пробовал preg_match_all ("++. *? ++", $ input, $ matches); но не удалось. Я что-то упустил?

+0

Как это провал? Несомненно, вы пропустили разделители регулярных выражений. У вас есть строки типа '++++++++++', которые вы не хотите сопоставлять? Попробуйте ['preg_match_all ('~ (?

+0

Вы проверили ответы? –

ответ

0

Вы пропустили, чтобы избежать +, а также забыли добавить php-разделители.

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

Ваше регулярное выражение отсутствует regex delimiters. Кроме того, + представляет собой специальный метасимвол регулярного выражения (a один или несколько кванторов), он должен быть экранирован, чтобы обрабатываться как буквенный символ.

Если у вас есть только буквенно-цифровые символы, чтобы соответствовать внутри только двойной плюс символы, вы можете использовать

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); 
Смежные вопросы