Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: не работает поис с подмаской в регулярке
Форумы портала PHP.SU » PHP » Регулярные выражения » не работает поис с подмаской в регулярке

Страниц (1): [1]
 

1. DlTA - 08 Июня, 2012 - 23:17:05 - перейти к сообщению
берем урок http://www.php.su/lessons/?lesson_17

строка там 'as34sdf34'
регулярка '/([0-9]{2,3}).\1/'
теоретическа как там написано должно было найти '34'
хотя смущает единичкая точка
должно быть хотя б вот так '/([0-9]{2,3}).{3}\1/' или '/([0-9]{2,3}).+?\1/'
но не суть важно так как ни один из трех вариантов не срабатывает
все выдают пустоту
хотя если убрать "\1" то все чет находят, а хотелось бы с подмасками
проверял на php 5.3, 5.2 результат одинаковый

так вот вопрос подмаски отменили или глюк в чем то другом?
2. OrmaJever - 08 Июня, 2012 - 23:26:14 - перейти к сообщению
Не срабатывает она в двойных кавычках потому что обратный слеш в двойных кавычках как спец символ (\n \r \t и т.д идут отсюда), либо использовать одинарные либо экранизировать \\1. Насчёт точки там навеное ошибка, и правда точка обозначает один символ, а там их 3, поэтому для работы после точки нужно поставить плюс.
3. DlTA - 08 Июня, 2012 - 23:50:37 - перейти к сообщению
на данном примере смена кавычек сработала
хотя не совсем понимаю логики
к примеру текст: "as34.34"
регулярка: "/([0-9]+)\.\\1/" // срабатывает.
почему тогда перед точкой одинарный слеш, без экранирующего ?
4. DeepVarvar - 08 Июня, 2012 - 23:59:48 - перейти к сообщению
DlTA пишет:
почему тогда перед точкой одинарный слеш, без экранирующего ?
Потому что в контексте пыха внутри двойных кавычек точка не является спецсимволом как n, t, r и прочие.
А еще вместо экранирования подмаски можно использовать знак доллара, а т.к. опять же даже в двойных кавычках имя переменной не может начинаться с числа (номер подмаски), то и эта конструкция воспринимается как строка, которая уже и передается в pcre.
5. DlTA - 09 Июня, 2012 - 00:16:42 - перейти к сообщению
кажись догнал, типа если в двойных кавычках запись типа \1 и т.п. это интерпритируется как код символа
-. ◙♀♂♪♫☼►◄↕‼¶§▬↨↑↓→

 

Powered by ExBB FM 1.0 RC1