Python Regex – Как подсчитать количество матчей?
Чтобы подсчитать рисунку Regex несколько раз в данной строке, используйте метод Len (Re.findall (Pattern, String)), который возвращает количество сопоставленных подстроек или Len ([* Re.finditer (Pattern, Text)]), которые распаковывают Все соответствующие подстроки в список и возвращает ее длину. Несколько часов назад я написал регулярное выражение в Python, который соответствовал … Python Regex – Как подсчитать количество матчей? Прочитайте больше “
Чтобы подсчитать рисунок Regex несколько раз в заданной строке, используйте метод ЛЕН (RE.FINDALL (Узор, строка)) Это возвращает количество сопоставленных подстрок или Лен ([* Re.finditer (шаблон, текст)]) Это распаковывает все соответствующие подстроки в список и возвращает ее длину.
Несколько часов назад я написал Регулярное выражение в Python Это соответствовало не один раз, но несколько раз в тексте и задавался вопросом: Как сосчитать количество матчей?
Рассмотрим минимальный пример, где вы соответствуете произвольному количеству символов слова «[A-Z] + ‘ В данном предложении «Python — лучший язык программирования в мире» Отказ
Вы можете посмотреть мое видео объяснения, как вы прочитали по учебнику:
Связанная статья: Python Regex SuperPower – Ultimate Guide
Инженеры Google, Facebook и Amazon являются регулярными мастерами. Если вы хотите стать одним, а также проверить нашу новую книгу: Самый умный способ изучить Python Regex (Amazon Kindle/Print, открывается на новой вкладке) Отказ
Сколько матчей в строке? Чтобы подсчитать количество совпадений, вы можете использовать несколько методов:
Метод 1: Python Re.findall ()
Используйте метод Re.findall (Pattern, String), который возвращает список совпадающих подстроек. Затем подсчитайте длину возвращенного списка. Вот пример:
>>> import re >>> pattern = '[a-z]+' >>> text = 'python is the best programming language in the world' >>> len(re.findall(pattern, text)) 9
Почему результат 9? Потому что в возвращенном списке Re.findall () Метод:
>>> re.findall(pattern, text) ['python', 'is', 'the', 'best', 'programming', 'language', 'in', 'the', 'world']
Этот метод отлично работает, если есть не перекрывающиеся спички.
Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.
Метод 2: Python Re.finditer ()
Вы также можете подсчитать количество раз данного шаблон Матчи в текст Используя Re.finditer (шаблон, текст) Метод:
Спецификация : Re.finditer ( Pattern , Text , Флаги = 0 )
Определение : возвращает итератор, который проходит через все не перекрывающиеся матчи шаблон В текст Отказ
Флаги Аргумент позволяет настроить некоторые расширенные свойства двигателя REGEX, например, следует ли игнорировать капитализацию символов. Вы можете узнать больше о Флаги аргумент в моем подробном руководстве по блогу Отказ
Пример : Вы можете использовать итератор для подсчета количества совпадений. В отличие от Re.findall () Метод, описанный выше, это имеет преимущество, что вы можете проанализировать сами объекты матча, которые несут гораздо больше информации, чем только соответствующая подстрока.
import re pattern = '[a-z]+' text = 'python is the best programming language in the world' for match in re.finditer(pattern, text): print(match) ''''''
Если вы хотите сосчитать количество совпадений, вы можете использовать простой Считать Переменная:
import re pattern = '[a-z]+' text = 'python is the best programming language in the world' count = 0 for match in re.finditer(pattern, text): count += 1 print(count) # 9
Или более пифитонское решение:
import re pattern = '[a-z]+' text = 'python is the best programming language in the world' print(len([*re.finditer(pattern, text)])) # 9
Этот метод отлично работает, если есть не перекрывающиеся спички. Он использует Звездочный оператор * распаковать все значения в утечке.
Метод 3: перекрывающиеся спички
Вышеуказанные два метода работают отлично, если нет перекрытия матчи Отказ Если есть перекрывающиеся спички, двигатель Regex будет просто игнорировать их, потому что он «потребляет» все подходящие подстроки и начинает соответствовать следующему узору только после Стоп Индекс предыдущего матча.
Поэтому, если вам нужно найти количество совпадений совпаданий, вам нужно использовать другой подход.
Идея состоит в том, чтобы отслеживать начальную позицию в предыдущем матче и увеличивать его за один после каждого матча:
import re pattern = '99' text = '999 ways of writing 99 - 99999' left = 0 count = 0 while True: match = re.search(pattern, text[left:]) if not match: break count += 1 left += match.start() + 1 print(count) # 7
Отслеживая индекс начала предыдущего совпадения в левой переменной, мы можем контролировать, где искать следующий матч в строке. Обратите внимание, что мы используем Python’s Операция нарезки Текст [слева:] Чтобы игнорировать все левые символы, которые уже рассматриваются в предыдущих матчах. В каждом петля Итерация, мы сопоставляем еще один узор в тексте. Это работает, даже если эти совпадения перекрываются.
Куда пойти отсюда
Вы узнали три способа найти количество совпадений данного шаблона в строке.
Если вы боретесь с регулярными выражениями, проверьте наши бесплатные 20 000 слов Regex Учебное пособие На блог Finxter! Это даст тебе Regex Superpowers !
Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.
Курс Python Regex
Инженеры Google являются регулярными мастерами. Система поисковой системы Google – это массивная Текстово-обработка двигателя Это извлекает значение из триллионов веб-страниц.
Инженеры Facebook являются регулярными мастерами экспрессии. Социальные сети, такие как Facebook, WhatsApp, и Instagram Подключите людей через Текстовые сообщения Отказ
Инженеры Amazon являются регулярными мастерами экспрессии. Ecommerce Giants корабля продуктов на основе Описания текстовых продуктов Отказ Регулярные выражения правит игре, когда текстовая обработка соответствует информатике.
Если вы тоже хотите стать регулярным мастером выражения, проверьте Самый полный курс Python Regex на планете:
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Читайте ещё по теме:
Python Regex – How to Count the Number of Matches?
To count a regex pattern multiple times in a given string, use the method len(re.findall(pattern, string)) that returns the number of matching substrings or len([*re.finditer(pattern, text)]) that unpacks all matching substrings into a list and returns the length of it as well.
A few hours ago, I wrote a regular expression in Python that matched not once but multiple times in the text and wondered: how to count the number of matches?
Consider the minimal example where you match an arbitrary number of word characters ‘[a-z]+’ in a given sentence ‘python is the best programming language in the world’ .
You can watch my explainer video as you read over the tutorial:
Programmer Humor
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.
Be on the Right Side of Change 🚀
- The world is changing exponentially. Disruptive technologies such as AI, crypto, and automation eliminate entire industries. 🤖
- Do you feel uncertain and afraid of being replaced by machines, leaving you without money, purpose, or value? Fear not! There a way to not merely survive but thrive in this new world!
- Finxter is here to help you stay ahead of the curve, so you can keep winning as paradigms shift.
Learning Resources 🧑💻
⭐ Boost your skills. Join our free email academy with daily emails teaching exponential with 1000+ tutorials on AI, data science, Python, freelancing, and Blockchain development!
Join the Finxter Academy and unlock access to premium courses 👑 to certify your skills in exponential technologies and programming.
New Finxter Tutorials:
Finxter Categories: