Perl (и Python соответственно) сообщает части (?!...)
:
Негативное предположение нулевой ширины. Например, /foo(?!bar)/
соответствует любому вхождению 'foo', за которым не следует 'bar'. Однако обратите внимание, что взгляд вперед и взгляд назад - это не одно и то же. Вы не можете использовать это для просмотра назад.
Это значит,
(?!^[0-9]*$)
означает: не совпадает, если строка содержит только чисел. (^
: начало строки / строки, $
: конец строки / строки) Другой соответственно.
Ваше регулярное выражение соответствует любой строке, которая содержит и цифр и букв, но не только одну из них.
Приветствия
Обновление: Для вашего будущего пошива RegExp взгляните на шаблон (?#...)
. Это позволяет встраивать комментарии в ваши регулярные выражения. Также есть модификатор re.X
, но мне это не очень нравится. Это твой выбор.