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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как в регулярное выражение добавить html спецсимвол, например ' ;
К сожалению, такой вариант не правильный.
Теперь эта регулярка будет пропускать не только ' ;, но и все подряд.
А потому результат всегда положительный...
Строитель, огромное спасибо! Это действительно даже больше, чем мне нужно было.
особенно был приятно удивлен конструкцией:
Цитата:
[\pL\s]
Еще раз спасибо вам и этому сообществу! (Добавление)
Мелкий пишет:
Скобки слегка не там:
Проще было бы кстати инвертировать логику, добавить кавычки в символьную маску и
Дело в том, что вариант не подходит.
Данные приходят уже с спецсимволом, а после приходится обрабатывать.
Здесь я лишь указал урезанный код для примера.
Мелкий, но спасибо вам за правильный совет!
Приятно.
Строитель
Отправлено: 17 Июля, 2018 - 16:36:36
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
curiosity пишет:
особенно был приятно удивлен конструкцией
\pL - это упрощённо говоря буквы (латиница). А если дописать к шаблону модификатор u, то последовательность символов (иначе говоря - символьный класс)\pL будет соответствовать ещё и кириллице. \s - это символьный класс пробельных символов. Что-то ещё разъяснить?
curiosity
Отправлено: 17 Июля, 2018 - 16:59:10
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Строитель пишет:
\pL - это упрощённо говоря буквы (латиница). А если дописать к шаблону модификатор u, то последовательность символов (иначе говоря - символьный класс)\pL будет соответствовать ещё и кириллице. \s - это символьный класс пробельных символов. Что-то ещё разъяснить?
Спасибо! Благодаря вам, теперь стал чуть больше понимать в такой не простой теме под названием "Regular expressions".
Но если вам не сложно, еще вот этот момент, чтоб закрепить.
Цитата:
(?:' ;)
Смотря в мануалы, я вижу:
Цитата:
(?:шаблон) - группировка как и '( )', но без обратной ссылки.
Вот это "без обратной ссылки" мне никак не дается.
Интуитивно понимаю, что надо еще несколько раз прочесть мануалы, чтоб понять смысл вот этого "без обратной ссылки" и в чем принципиальная разница между ( ) и (?:шаблон).
И еще, я правильно понял, если необходимо разрешить еще какие-либо спецсимволы, то за *(?:' ;) добавляю еще одну группу например *(*(?:"))
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
curiosity пишет:
в чем принципиальная разница между ( ) и (?:шаблон)
Разница в том, что обычные круглые скобки помимо группировки, выполняют ещё и "захват" найденных соответствий (сравните результирующие массивы - в случае с простыми круглыми скобками, элементов в массиве будет больше):
Обратите внимание - первый элемент второго массива будет соответствовать полному вхождению шаблона, а второй элемент будет соответствовать только той части шаблона, которая была записана в круглых скобках.
Ещё одна особенность захватывающих скобок - это возможность ссылаться на т.н. "подмаски" прямо внутри шаблона:
В этом примере последовательность символов \1 будет ссылаться на захваченное (в случае соответствия шаблону) значение, соответствующее выражению [a-z]+. Нумерация ссылок на подмаски начинается с единицы, и считается слева направо. Предыдущий пример можно записать с двумя ссылками на подмаски:
Номер ссылки на подмаску соответствует номеру ключа в результирующем массиве.
Строитель
Отправлено: 17 Июля, 2018 - 23:39:28
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
curiosity пишет:
И еще, я правильно понял, если необходимо разрешить еще какие-либо спецсимволы, то за *(?:' ;) добавляю еще одну группу например *(*(?:"))
Теоретически - да. А практически - в регулярных выражениях нужно чётко понимать, в какой последовательности символы должны находиться в строке для успешного поиска соответствий regexp-шаблону. Это наиболее важный момент, который нужно чётко себе представлять. Иначе выражаясь, для регулярных выражений важна позиция символов в строке. (Добавление)
В функции preg_replace() ссылки на подмаски записываются ввиде последовательности символов, состоящих из знака доллара $, и номера подмаски, например (обязательно в одинарных кавычках): '$1' - ссылка на первую группу; '$2' - ссылка на вторую группу (и т.д.)
Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Строитель пишет:
круглые скобки помимо группировки, выполняют ещё и "захват" найденных соответствий
Благодаря вам, думаю, я словил "нить" о том, что такое "без обратной ссылки" и "захват".
А вот здесь
Строитель пишет:
Ещё одна особенность захватывающих скобок - это возможность ссылаться на т.н. "подмаски" прямо внутри шаблона
Я уже, честно говоря, потерялся...
Видимо устал, да и знаний в этой теме явно не хватает.
Но после ваших ответов и примеров, появилось приятное желание найти время, чтоб детальней и более структурно начать изучать мануалы по reg exp.
Еще раз спасибо вам, за время и внимание уделенное моим вопросам.
P.S.
Буду еще более благодарен, если дадите ссылку на человеко-понятный талмуд по этой тем.
Пока все, что нагуглил, достаточно сухо и концентрированно, а иногда и вовсе непонятно.
Строитель
Отправлено: 18 Июля, 2018 - 07:21:04
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
curiosity, скачайте книгу "Регулярные выражения 3-е издание" Джеффри Фридл. В ней описаны все тонкости.
curiosity
Отправлено: 18 Июля, 2018 - 10:57:28
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2015
Помог: 0 раз(а)
Строитель пишет:
curiosity, скачайте книгу "Регулярные выражения 3-е издание" Джеффри Фридл. В ней описаны все тонкости.
Так и сделаю. Благодарю!
v
Отправлено: 01 Августа, 2018 - 10:22:49
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Июнь 2017
Помог: 0 раз(а)
Люди добрые, помогите с регуляркой, я ее ни как не могу понять((
НУжно строку проверить на соответсвтие:
строка может быть .11101. или .00112.00212А.00002АВ.
главное впереди 5 цифр а к конце может быть пару букв
Строитель
Отправлено: 01 Августа, 2018 - 11:17:10
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
v пишет:
главное впереди 5 цифр а к конце может быть пару букв
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.