В этом руководстве я покажу вам разницу в количестве регулярных выражений в Python.
В чем разница между оценком вопросительного знака ( ? ), плюс квантификатор ( + ) и квантификатор звездочка ( * )?
Скажем, у вас есть шаблон регулярного выражения A .
- Regex.
А?соответствует нулю или одному вхождениюA. - Regex.
A*соответствует нулю или более вхождениюA. - Regex.
A+соответствует одному или нескольким вхождениямA.
Попробуй сам:
Связанная статья: Python Regex SuperPower – Ultimate Guide
Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.
Asterisk против вопросительного знака
Вы можете прочитать Python Re a? Quantifier Как Zero-Or-One Regex: предыдущее REGEX A сопоставлено либо нулевым временем, либо ровно один раз. Но это не совсем не совсем не совсем.
Аналогично, вы можете прочитать оператор Python Re * как нулевое или больше Regex (я знаю, что это звучит немного неуклюжему): предыдущее Regeex A сопоставляется произвольным количеством раз.
Вот пример, который показывает разницу:
>>> import re
>>> re.findall('ab?', 'abbbbbbb')
['ab']
>>> re.findall('ab*', 'abbbbbbb')
['abbbbbbb']Regex ‘AB?’ Соответствует символу «A» в строке, за которым следует символ «B», если он существует (что он делает в коде).
Regex ‘ab *’ соответствует символу «A» в строке, а затем как можно больше символов B ‘.
Asterisk vs plus
Вы можете прочитать квантификатор Python Re *, как Regex Zero или Morex: предыдущее Regex A сопоставляется произвольным количеством раз.
Аналогично, вы можете прочитать оператор Python Re + как по меньшей мере, когда Regex: предыдущий Regex A также совпадает с произвольным количеством раз, но, по крайней мере, один раз.
Вот пример, который показывает разницу:
>>> import re
>>> re.findall('ab*', 'aaaaaaaa')
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> re.findall('ab+', 'aaaaaaaa')
[]Regex ‘ab *’ соответствует символу «A» в строке, за которым следует новенький номер вхождения символов «B». Подстрока «A» прекрасно соответствует этой формулировке. Поэтому вы обнаружите, что Regeex совпадает с восемь раз в строке.
Regex ‘AB +’ соответствует персонажу «A», а затем как можно больше персонажей B ‘, но хотя бы один. Однако персонаж «B» не существует, так что нет совпадения.
Резюме : При применении к регулярному выражению a * квантификатор Python соответствует нулю или более вхождению A. Quantifier называется Assterisk оператором, и он всегда применяется только к предыдущему регулярному выражению. Например, регулярное выражение «да *» совпадает с строками «YE», «да» и «yesssssss». Но это не соответствует пустой строке, потому что квантификатор Asterisk * не применяется ко всему Regex «Да», но только для предыдущего регеляции ‘S’.
Вопросительный знак против плюс
Вы можете прочитать Python Re a? Quantifier Как Zero-Or-One Regex: предыдущее REGEX A сопоставлено либо нулевым временем, либо ровно один раз. Но это не совсем не совсем не совсем.
Аналогично вы можете прочитать оператор Python RE A + в качестве регенерации, как минимум-после того, как Regex: предыдущее Regeex A сопоставляется произвольным количеством раз, но, по крайней мере, один раз.
Вот пример, который показывает разницу:
>>> import re
>>> re.findall('ab?', 'aaaaaaaa')
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> re.findall('ab+', 'aaaaaaaa')
[]Regex ‘AB?’ Соответствует символу «A» в строке, за которым следует символ «B», если он существует – но он не в коде.
Regex ‘AB +’ соответствует символу «a» в строке, а затем как можно больше символов, но хотя бы один. Однако персонаж «B» не существует, так что нет совпадения.
Куда пойти отсюда?
Вы узнали разницу количеств Regex в Python.
Резюме : Regex А? соответствует нулю или одному вхождению А Отказ Regex A * соответствует нулю или более вхождению А Отказ Regex A + соответствует одному или нескольким вхождению А Отказ
Хотите заработать деньги, пока вы изучаете Python? Средние программисты Python зарабатывают более 50 долларов в час. Вы можете стать средним, не так ли?
Присоединяйтесь к свободному вебинару, которое показывает, как стать процветающим владельцем бизнеса в Интернете!
[Вебинар] Вы являетесь личным разработчиком Freelance Six
Присоединяйтесь к нам. Это весело! 🙂.
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.