точно соответствует python regex url

1

У меня есть следующее:

rule = "http://www.abc.com/"
test = "http://www.abc.com/test"
print(str(re.compile(rule).match(test)))

Я хочу, чтобы это выводило None, но вместо этого оно возвращает совпадение. Как изменить переменную правила, чтобы регулярное выражение не возвращало None?

  • 0
    Кстати, вы должны избежать периодов в правиле. Если вы этого не "http://www3abc3com/" может "http://www3abc3com/" что-то вроде "http://www3abc3com/" . По крайней мере, я так думаю ... Хотя я могу ошибаться. Но попробуйте проверить это.
  • 0
    Оберните регулярное выражение с помощью ^ и $ и избегайте точек
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Символ ^ соответствует началу строки, а $ соответствует концу строки. Поэтому вам нужно:

rule = "^http://www\.abc\.com/$"
test = "http://www.abc.com/test"
print(str(re.compile(rule).match(test)))

Обратите внимание, что . означает "соответствовать любому символу", поэтому, если вы хотите совпадение с фактическим . вам нужно \ перед этим.

  • 0
    Просто любопытно, нужно ли ^, так как совпадение с питоном автоматически начинается в начале строки?
  • 0
    Да, ты прав. Если вы используете матч, это не обязательно. Однако если вы используете поиск вместо соответствия, это необходимо.
2

Я не думаю, что вам нужно regexp здесь, если вы хотите сравнить полные строки. Пожалуйста, поправьте меня, если я вас неправильно пойму. :)

Возможно, этот код будет устным:

rule = "http://www.abc.com/"
test = "http://www.abc.com/test"
print(rule == test)

Возвращает False если строки различны, True противном случае.

  • 0
    Конечно, я могу просто проверить равенство, но, к сожалению, мне нужно регулярное выражение в этой текущей ситуации :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню