Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2011, 09:59   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Корректность Регулярного выражения

Всем привет. Не нашёл более подходящего раздела, пишу сюда.

Написал регулярку для разбора URL, не знаю, кто-то уже такое делал, но я не нашёл.
Задача - извлекать из URL всё что можно: схему, имя, пароль, хост, порт и т.д.

Код:
\A
(?:     (?P<scheme>                     \w+)            ://             )?
(?:     (?P<user>                       [\w_]+)         [:@]            )?
(?:     (?P<password>           (?<=:)  [\w%_]+)        @               )?
(?:     (?P<host>                       [\w._-]+?)      (?:[/:?#]|\Z)   )?
(?:     (?P<port>                       (?<=:)  \d+)    (?:[/:?#]|\Z)   )?
(?:     (?P<path>               (?<=/)  [^?#]*)         (?:[?#]|\Z)     )?
(?:     (?P<parameters>         (?<=\?) [^#]+)          (?:[#]|\Z)      )?
(?:     (?P<anchor>             (?<=\#) .+)             \Z              )?
Мне нужно, что-бы если нет какого-то необязательного элемента, например, порта, всё остальное-бы работало как надо. Я тестил, работает. Вас прошу опытным взглядом проверить, исправить и дополнить моё творения, ибо с регулярками познакомился недавно.
Altera вне форума Ответить с цитированием
Старый 18.08.2011, 12:06   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Есть специализированная программа для работы с регулярными. В ней ты сможешь как раз протестировать свою запись.

Называется она RegExBuddy.

Она в приложении

АДД:
а ещё справка по Регулярным выражениям.
Изображения
Тип файла: jpg Справка РегВыр.jpg (56.3 Кб, 124 просмотров)
Вложения
Тип файла: rar RegexBuddy.rar (1.50 Мб, 14 просмотров)

Последний раз редактировалось Вадим Мошев; 18.08.2011 в 12:17.
Вадим Мошев вне форума Ответить с цитированием
Старый 18.08.2011, 12:48   #3
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

У меня Kodos
Да регулярка работает. Я к тому спрашиваю, что может проще можно сделать?

Цитата:
В ней ты сможешь как раз протестировать свою запись.
Как раз в неё моя запись почему-то не работает...
Разобрался, verbose почему-то не работает, т.е. у него его просто нет

Последний раз редактировалось Altera; 18.08.2011 в 13:35.
Altera вне форума Ответить с цитированием
Старый 18.08.2011, 13:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а разве везде есть именованые группы?(интересует у boost::regex)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.08.2011, 17:44   #5
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ок, кажись то сделал как надо
Код:
\A(?:(?P<scheme>[^:/?#]+)://)?
(?:(?P<username>[^:@/?#]+)(?::(?P<password>[^/?#]+))?@)?
(?:(?P<host>[^:/?#]+))
(?::(?P<port>[^@/?#]+))?
(?:(?P<path>/[^?#]*))?
(?:\?(?P<params>[^#]*))?
(?:\#(?P<anchor>.*))?
Цитата:
а разве везде есть именованые группы?
Не знаю, в питоне есть
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привет всем! Кто подскажет как настроить в Adobe Dreamweaver CS5 тестовый сервер(у меня Apache2.2) что бы velamut PHP 0 26.01.2011 19:48
не знаю куда писать поэтому пишу сюда просьба тему не закрывать а переместить в нужный раздел если такой DarkAngelOfLight Свободное общение 16 16.10.2010 02:59