Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Программирование

PHP. Задачки с PCRE (регулярные выражения) и вопросы по ним. : Программирование

28.03.2024 11:39


07.08.2020 18:32
student
 
Цитата:
OlegON ну как-то не очень вариант...
я бы \[{0,1} заменил на \[? а так вполне себе нормально :)
и м.б. также заменил [0-9] на \d
т.е. в конечном виде

([A-Z]{3})\-(\d+)\[?([^\]]*)\]?\.htm
10.08.2020 16:05
OlegON
 
Убрал жадность и добавил вопросы вместо количества.

^([A-Z]{3})\-([\d]+)\[?(.+?)\]?\.htm$

вроде то, что надо, спасибо.
10.08.2020 16:12
OlegON
 
Эээ... Нет, работает именно
^([A-Z]{3})\-(\d+)\[?([^\]]*)\]?\.htm$
вариант с нежадным почему-то резко жаднеет на варианте
Код:
ORA-0034.htm
отжирая "4" в третий параметр.
10.08.2020 20:03
vdm
 
Если в ([^\]]*) звездочку поменять на плюс, то будет точно также отъедать символ.
10.08.2020 20:24
OlegON
 
логично, поскольку плюс подразумевает наличие символа... а как его ещё получить? откусить суффикс... а вот как нежадного уговорить непонятно...
10.08.2020 23:49
vdm
 
(.*?) и ([^\]]*) работают одинаково, группа заполняется.
Для чего тогда тут
Цитата:
OlegON Убрал жадность и добавил вопросы вместо количества.
^([A-Z]{3})\-([\d]+)\[?(.+?)\]?\.htm$
был использован + а не *. Чем плоха возможная пустая группа при *.
11.08.2020 06:59
OlegON
 
Цитата:
vdm Для чего
Просто ошибся :)
Действительно, вариант
^([A-Z]{3})\-([\d]+)\[?(.*?)\]?\.htm$
тоже работает, как надо.
13.10.2021 14:29
KirillHome
 
02.04.2022 10:42
OlegON
 
взорвал себе мозг, прошу помощи у сообщества
https://olegon.ru/pr/check_regexp.ph...\wА-я]#&pcrer=
Цель - вылавливать строки вида @test, стоящие в начале строки и после пробела в том числе, но не ловить емейлы (то есть ничего, что с @ в центре слова). Что-то никак не дается :(
04.04.2022 10:57
vdm
 
Да вроде по описанию все без хитростей:
#(^|\s+)@[\wА-я]#
Часовой пояс GMT +3, время: 11:39.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.