Почему re.findall () возвращает пустой список в этом случае и список с пустой строкой в ​​другом? - PullRequest
0 голосов
/ 20 февраля 2019

re.findall(r'[^-](-*)$', '----') возвращает пустой список [].

Между тем, re.findall(r'[^-](-*)$', '----343') возвращает список с пустой строкой [''].

В обоих случаях совпадения нет.Почему re.findall () возвращает пустой список в первом случае, но список с пустой строкой во втором случае?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

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

0 голосов
/ 20 февраля 2019

$ соответствует концу строки, которая имеет ноль символов.В первом случае совпадений нет, потому что перед концом строки стоит тире (-), с которой вы отрицаете [^-].Во втором конце конца строки предшествует символ без тире, который соответствует регулярному выражению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...