#python #regex
Вопрос:
Я хочу извлечь страницу и номер страницы из URL с помощью регулярного выражения. Существует несколько вариантов номера страницы:
fghghdsfs/page4
fghghdsfs/page-4
sfgsfgsfg/page=4
hteheth/page-4/
dhdghgd/page=4/
dghdghdh/page/4/
dghdghdh/page/4
fghghdsfs?page4
dhdghd?page-4
dghdg?page-4/
eyeyt?page=4
etyetyet?page=4/
nvnndgnd?page/4/
dghdghdh/page/4
Номер страницы должен содержать от 1 до 3 цифр.
Я пробовал использовать это регулярное выражение, но у меня проблема с идентификацией /
:
(=|?|/)(page)(_|-|=|d{1,3}|/)
Комментарии:
1. Какая проблема у вас с идентификацией
/
?
Ответ №1:
С регулярным выражением, которое у вас есть, есть две проблемы:
d{1,3}
находится внутри круглых скобок. Вы говорите:page
за которым следует либо разделитель, либо номер страницы. Поместите его после круглых скобок и сделайте его группой захвата, чтобы вы могли извлечь его позже.- Группа с разделителями обязательна, поэтому
page4
не соответствует. Поместите a?
после группы.
Исправление этих:
(=|?|/)(page)(_|-|=|/)?(d{1,3})
Ответ №2:
Вы можете использовать это регулярное выражение:
[=?/]page[_=/-]?(d{1,3})
Демонстрация регулярных выражений
Сведения о регулярных выражениях:
[=?/]
: Совпадение=
или?
или/
page
: Сопоставить строкуpage
[_=/-]?
: Необязательно сопоставлять_
или=
или/
или-
(d{1,3})
: Сопоставьте от 1 до 3 цифр
Комментарии:
1. Я удалил группу захвата, и тогда у нас в основном одни и те же ответы. Я бы выбрал этот ответ.