У меня есть один простой вопрос о том, как бросать исключения в функцию re.match
Есть ли способ "сопоставить" функцию, которая выбрала исключение? Может, какой-то флаг. Если это невозможно, возможно, в библиотеке RE есть еще одна функция, которая генерирует исключение, например, когда список будет пустым.
Пример:
verify_link=re.match(".*"+str(country).lower()+"."+str(city).lower()+".*",link)
Этот пример в некоторых случаях возвращает None
Я ищу метод, который бы выбрал Exception, а не None. Я могу сделать это с помощью инструкции "if", но, возможно, есть другой способ
Нет такой функции (-ов) в модуле Python re
. См. Документ:
исключение re.error
Исключение, возникающее, когда строка, переданная в одну из функций здесь, не является допустимым регулярным выражением (например, она может содержать несогласованные скобки) или когда возникает какая-либо другая ошибка во время компиляции или сопоставления. Это никогда не является ошибкой, если строка не содержит соответствия шаблону.
if re.match(".*"+str(country).lower()+"."+str(city).lower()+".*", link) is None:
raise Exception('whatever')
Эээ? Исключения должны происходить только в исключительной ситуации, а не в том, что вы описываете. Но, если вам нужно, вы всегда можете проверить возвращаемое значение, используя if
и затем возбуждать исключение.
Изменение: и даже сделать собственную функцию, чтобы скрыть выброс исключений...
Если вы хотите выбросить исключение??? поэтому вы можете использовать метод индексной строки, например:
verify_link = link.index(str(country).lower()+"."+str(city).lower())
EDITED: Вы должны принять во внимание это. будет соответствовать точке только в моем примере выше.
Но я думаю, что это не лучший способ проверить, что подстрока находится внутри строки.
.
здесь не будет иметь такого же значения, как в регулярном выражении.