проблема: выбрасывание исключения в функции re.match

1

У меня есть один простой вопрос о том, как бросать исключения в функцию re.match

Есть ли способ "сопоставить" функцию, которая выбрала исключение? Может, какой-то флаг. Если это невозможно, возможно, в библиотеке RE есть еще одна функция, которая генерирует исключение, например, когда список будет пустым.

Пример:

verify_link=re.match(".*"+str(country).lower()+"."+str(city).lower()+".*",link)

Этот пример в некоторых случаях возвращает None

Я ищу метод, который бы выбрал Exception, а не None. Я могу сделать это с помощью инструкции "if", но, возможно, есть другой способ

  • 0
    ... Вт ч а т?
  • 0
    не могли бы вы объяснить, что вы пытаетесь сделать?
Показать ещё 1 комментарий
Теги:
exception

4 ответа

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

Нет такой функции (-ов) в модуле Python re. См. Документ:

исключение re.error

Исключение, возникающее, когда строка, переданная в одну из функций здесь, не является допустимым регулярным выражением (например, она может содержать несогласованные скобки) или когда возникает какая-либо другая ошибка во время компиляции или сопоставления. Это никогда не является ошибкой, если строка не содержит соответствия шаблону.

2
if re.match(".*"+str(country).lower()+"."+str(city).lower()+".*", link) is None:
    raise Exception('whatever')
1

Эээ? Исключения должны происходить только в исключительной ситуации, а не в том, что вы описываете. Но, если вам нужно, вы всегда можете проверить возвращаемое значение, используя if и затем возбуждать исключение.

Изменение: и даже сделать собственную функцию, чтобы скрыть выброс исключений...

  • 0
    Если вы ожидаете совпадения, но его нет, это исключение.
0

Если вы хотите выбросить исключение??? поэтому вы можете использовать метод индексной строки, например:

verify_link = link.index(str(country).lower()+"."+str(city).lower())

EDITED: Вы должны принять во внимание это. будет соответствовать точке только в моем примере выше.

Но я думаю, что это не лучший способ проверить, что подстрока находится внутри строки.

  • 0
    . здесь не будет иметь такого же значения, как в регулярном выражении.
  • 0
    Ах да, конечно, вы правы

Ещё вопросы

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