берем урок 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 результат одинаковый
так вот вопрос подмаски отменили или глюк в чем то другом?
1. DlTA - 08 Июня, 2012 - 23:17:05 - перейти к сообщению
2. OrmaJever - 08 Июня, 2012 - 23:26:14 - перейти к сообщению
Не срабатывает она в двойных кавычках потому что обратный слеш в двойных кавычках как спец символ (\n \r \t и т.д идут отсюда), либо использовать одинарные либо экранизировать \\1. Насчёт точки там навеное ошибка, и правда точка обозначает один символ, а там их 3, поэтому для работы после точки нужно поставить плюс.
3. DlTA - 08 Июня, 2012 - 23:50:37 - перейти к сообщению
на данном примере смена кавычек сработала
хотя не совсем понимаю логики
к примеру текст: "as34.34"
регулярка: "/([0-9]+)\.\\1/" // срабатывает.
почему тогда перед точкой одинарный слеш, без экранирующего ?
хотя не совсем понимаю логики
к примеру текст: "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 и т.п. это интерпритируется как код символа
-. ◙♀♂♪♫☼►◄↕‼¶§▬↨↑↓→
-. ◙♀♂♪♫☼►◄↕‼¶§▬↨↑↓→