![]() |
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]() ![]() ![]() |
|
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 1 Всего: 91 |
всем доброй ночи. в регулярках как не варил, так и не варю)
есть регулярка:
как сделать что бы поддомен был не обязателен? Т.е можно и ru.youtube.com и просто youtube.com? заранее благодарен |
|||
|
||||
Sannis |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: 1 Всего: 13 |
Доброй.
Например так:
Гуру, поправьте, если можно проще ![]() Это сообщение отредактировал(а) Sannis - 14.4.2008, 21:55 -------------------- |
||||
|
|||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 1 Всего: 91 |
Sannis, пасибо))
|
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
Я бы упростил до
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 8 Всего: 401 |
Насколько мне известно, \d входит в \w (равно как и _), поэтому \w\w для двух букв - это уж слишком упрощение
![]() Имхо, одинаково. Быстрее должно стать, если сделать скобки незахватывающими (?: ... ), а еще лучше однократными (?> ... ). -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Я так полагаю, что автор не от нечего делать перечислил все суб домены, что бы их просто так вот упрощать. Забавно ![]() А вот это уже грубая ошибка. Знак '-' в сете надо обязательно экранировать. И еще зачем тут знак '=' ? Нет смысла перечислять оба регистра букв, если стоит модификатор 'i'. Единственный случай, когда это может использоваться - это для русских букв при криво настроенной локали. Но в этом случае это может привести к багам с экзотическими кодировками.
Со вторым согласен, а вот насчет того что незахватывающие скобки сколько-нибудь сильно ускорят регулярку - очень сомневаюсь. Имхо, есть смысл только для того что бы удобнее было работать с результатами. Хороший пример сложных регулярок, выглядящих "приятно", есть у Котерова. К примеру, DbSimple, метод _expandPlaceholdersFlow. Это сообщение отредактировал(а) sTa1kEr - 15.4.2008, 12:34 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
ОК, тогда упростим до [a-z]{2} ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
В общем-то я к автору топика обращался, просто ваш пост ближе для цитирования оказался ![]() А вот ошибку с -(тире) вы благополучно переняли у gta4kv Это сообщение отредактировал(а) sTa1kEr - 15.4.2008, 23:11 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
Тут ты уже ошибаешься, обрати внимание, я поместил "-" последним символом в диапазоне, и это совершенно правильно, т.к. в таком случае оно не нуждается(rtfm) в экранировании...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
source777, И что? У автора в первом посте тоже "в ообщем-то будет работать". Но стоит ему захотеть расширить вашу регулярку, к примеру, добавить ~(тильду) в конец набора символов, и вся регулярка будет работать не правильно. Почему сразу не сделать правильно, заэкранировав спецсимволы, что бы регулярка всегда работала правильно без ошибок?
Кстати, еще нужно .(точку) экранировать. |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 2 Всего: 56 |
Точку в диапазоне не надо экранировать, она там не имеет спец. смысла...
Так она и будет сразу работать правильно и без ошибок, а если по пьяни(на трезвую то голову сложно забыть, что - должно быть последним символом диапазона) не добавлять в неподходящие места новые символы, то всегда будет так работать, хотя это уже дело вкуса, а поскольку о вкусах не спорят, то думаю нет смысла продолжать эту дискуссию... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 5 Всего: 146 |
Естественно. Я про другую точку говорил. В значении элмента XML знак '>' тоже парсер проглатывает, т.ч можно не заменять XML сущностями - и так сойдет. Главное на пьяную голову не забыть: поставь ты символ '<' и парсер загнется. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Тексты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |