Python RegEx: re.match(), re.search(), re.findall() с примером
Что такое регулярное выражение в Python?
A Регулярное выражение (RE) в языке программирования — это специальная текстовая строка, используемая для описания шаблона поиска. Это чрезвычайно полезно для извлечения информации из текста, такой как код, файлы, журналы, электронные таблицы или даже документы.
При использовании Python регулярное выражение Первое, что следует осознать, это то, что все, по сути, является символом, и мы пишем шаблоны, соответствующие определенной последовательности символов, также называемой строкой. Ascii или латинские буквы — это те, которые есть на вашей клавиатуре, а Unicode используется для соответствия иностранному тексту. Он включает цифры, знаки препинания, а также все специальные символы, такие как $#@!% и т. д.
Например, Python Регулярное выражение может указать программе искать определенный текст в строке, а затем соответствующим образом распечатать результат. Выражение может включать в себя
- Сопоставление текста
- Повторение
- разветвление
- Узор-композиция и т.д.
Регулярное выражение или RegEx в Python обозначается как RE (RE, регулярные выражения или шаблон регулярных выражений) импортируются через re модуль. Python поддерживает регулярные выражения через библиотеки. RegEx в Python поддерживает различные вещи, такие как Модификаторы, идентификаторы и пробельные символы.
Идентификаторы | Модификаторы | Пробелы | Требуется побег |
---|---|---|---|
\d= любое число (цифра) | \d представляет цифру. Пример: \d{1,5} он объявит цифру между 1,5, например 424,444,545 и т. д. | \ n = новая строка | . + * ? [] $ ^ () {} | \ |
\D= что угодно, кроме числа (не цифры) | + = соответствует 1 или более | \s= пробел | |
\s = пробел (табуляция, пробел, новая строка и т. д.) |
? = соответствует 0 или 1 | \t = вкладка | |
\S= что угодно, кроме пробела | * = 0 или более | \e = побег | |
\w = буквы (соответствует буквенно-цифровым символам, включая «_») | $ соответствует концу строки | \ r = возврат каретки | |
\W = все, кроме букв (соответствует небуквенно-цифровым символам, за исключением «_») | ^ соответствует началу строки | \f= подача формы | |
. = что угодно, кроме букв (точек) | | соответствует либо или x/y | ------ | |
\b = любой символ, кроме новой строки | [] = диапазон или «дисперсия» | ------ | |
\. | {x} = это количество предыдущего кода | ------ |
Синтаксис регулярного выражения (RE)
import re
- модуль «re» в комплекте Python в основном используется для поиска и обработки строк
- Также часто используется для веб-страницы «Зачистка(извлечение большого количества данных с веб-сайтов)
Мы начнем урок по выражениям с этого простого упражнения, используя выражения (w+) и (^).
Пример выражения w+ и ^
- «^»: Это выражение соответствует началу строки
- «ш+«: Это выражение соответствует буквенно-цифровому символу в строке
Здесь мы увидим Python RegEx Пример того, как мы можем использовать выражения w+ и ^ в нашем коде. Мы рассмотрим функцию re.findall() в Python, далее в этом руководстве, но на некоторое время мы просто сосредоточимся на выражениях \w+ и \^.
Например, для нашей строки «guru99, образование — это весело», если мы выполним код с помощью w+ и ^, на выходе будет «guru99».
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print(r1)
Помните, что если вы удалите знак + из w+, вывод изменится и выдаст только первый символ первой буквы, то есть [g]
Пример выражения \s в функции re.split
- «s»: это выражение используется для создания пробела в строке.
Чтобы понять, как этот RegEx в Python работает, начнем с простого Python RegEx Пример функции разделения. В примере мы разделили каждое слово с помощью функции «re.split» и в то же время использовали выражение \s, которое позволяет анализировать каждое слово в строке отдельно.
Когда вы выполните этот код, он выдаст вам выходные данные ['мы', 'есть', 'разделение', 'the', 'слова'].
Теперь давайте посмотрим, что произойдет, если вы удалите «\» из s. В выходных данных нет алфавита «s», это связано с тем, что мы удалили «\» из строки, и он оценивает «s» как обычный символ и, таким образом, разделяет слова везде, где он находит «s» в строке.
Аналогичным образом существует ряд других Python регулярное выражение, которое вы можете использовать различными способами в Python например \d,\D,$,\.,\b и т. д.
Вот полный код
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print((re.split(r'\s','we are splitting the words'))) print((re.split(r's','split the words')))
Далее мы рассмотрим типы методов, которые используются с регулярными выражениями в Python.
Использование методов регулярных выражений
Пакет «re» предоставляет несколько методов для фактического выполнения запросов к входной строке. Мы увидим методы повторного Python:
- re.match ()
- исследовать()
- re.findall ()
Внимание: На основе регулярных выражений, Python предлагает две различные примитивные операции. Метод match проверяет совпадение только в начале строки, тогда как search проверяет совпадение в любом месте строки.
re.match ()
re.match () функция повтора в Python выполнит поиск по шаблону регулярного выражения и вернет первое вхождение. Python Метод RegEx Match проверяет совпадение только в начале строки. Итак, если совпадение найдено в первой строке, оно возвращает объект совпадения. Но если совпадение найдено в какой-то другой строке, Python Функция RegEx Match возвращает ноль.
Например, рассмотрим следующий код Python функция re.match(). Выражения «w+» и «\W» будут соответствовать словам, начинающимся с буквы «g», и после этого все, что не начинается с «g», не идентифицируется. Чтобы проверить соответствие каждого элемента в списке или строке, мы запускаем цикл for в этом Python re.match() Пример.
re.search(): поиск шаблона в тексте
исследовать() функция будет искать шаблон регулярного выражения и возвращать первое вхождение. В отличие от Python re.match(), он проверит все строки входной строки. Python Функция re.search() возвращает объект соответствия, когда шаблон найден, и «ноль», если шаблон не найден.
Как использовать поиск()?
Чтобы использовать функцию search(), вам необходимо импортировать Python сначала переустановите модуль, а затем выполните код. Python Функция re.search() берет «шаблон» и «текст» для сканирования из нашей основной строки.
Например, здесь мы ищем две литеральные строки «Тестирование программного обеспечения» «guru99» в текстовой строке «Программное обеспечение». Тестирование это весело». Для «тестирования программного обеспечения» мы нашли совпадение, поэтому оно возвращает результат Python re.search() Пример: «найдено совпадение», тогда как слово «guru99» не удалось найти в строке, поэтому он возвращает результат «Нет совпадения».
re.findall ()
найти все() Модуль используется для поиска «всех» вхождений, соответствующих заданному шаблону. Напротив, модуль search() вернет только первое вхождение, соответствующее указанному шаблону. findall() будет перебирать все строки файла и возвращать все непересекающиеся совпадения шаблона за один шаг.
Как использовать re.findall() в Python?
Здесь у нас есть список адресов электронной почты, и мы хотим, чтобы все адреса электронной почты были извлечены из списка, мы используем метод re.findall() в Python. Он найдет все адреса электронной почты из списка.
Вот полный код примера re.findall().
import re list = ["guru99 get", "guru99 give", "guru Selenium"] for element in list: z = re.match("(g\w+)\W(g\w+)", element) if z: print((z.groups())) patterns = ['software testing', 'guru99'] text = 'software testing is fun?' for pattern in patterns: print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ') if re.search(pattern, text): print('found a match!') else: print('no match') abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com' emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc) for email in emails: print(email)
Python Флаги
Много Python Методы и функции регулярных выражений принимают необязательный аргумент, называемый флагами. Эти флаги могут изменить значение данного Python Шаблон регулярного выражения. Чтобы понять это, мы увидим один или два примера этих флагов.
Различные флаги, используемые в Python включает в себя
Синтаксис флагов регулярных выражений | Что делает этот флаг |
---|---|
[re.M] | Сделайте начало/конец, учитывайте каждую строку |
[о.Я] | Он игнорирует регистр |
[относительно С] | Делать [ . ] |
[re.U] | Make {\w,\W,\b,\B} соответствует правилам Юникода |
[относительно Л] | Сделать {\w,\W,\b,\B} соответствующим локали |
[ре.X] | Разрешить комментарии в Regex |
Пример re.M или многострочных флагов
В многострочном шаблоне символ [^] соответствует первому символу строки и началу каждой строки (следующему сразу после каждого символа новой строки). В то время как выражение small «w» используется для обозначения пробела с символами. При запуске кода первая переменная «k1» выводит только символ «g» для слова guru99, в то время как при добавлении флага многострочного текста она извлекает первые символы всех элементов в строке.
Вот код
import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print(k1) print(k2)
- Мы объявили переменную xx для строки «guru99…». карьерныйгуру99….селен»
- Запустите код без использования многострочных флагов, он выдает только «g» из строк.
- Запустите код с флагом «многострочный», когда вы печатаете «k2», он выдает выходные данные как «g», «c» и «s».
- Итак, разницу мы можем увидеть после и до добавления нескольких строк в приведенном выше примере.
Аналогично, вы также можете использовать другие Python такие флаги, как re.U (Юникод), re.L (следовать языковому стандарту), re.X (разрешить комментарии) и т. д.
Python 2 Пример
Вышеуказанные коды Python 3 примера. Если вы хотите обкатать Python 2 пожалуйста, рассмотрите следующий код.
# Example of w+ and ^ Expression import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print r1 # Example of \s expression in re.split function import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print (re.split(r'\s','we are splitting the words')) print (re.split(r's','split the words')) # Using re.findall for text import re list = ["guru99 get", "guru99 give", "guru Selenium"] for element in list: z = re.match("(g\w+)\W(g\w+)", element) if z: print(z.groups()) patterns = ['software testing', 'guru99'] text = 'software testing is fun?' for pattern in patterns: print 'Looking for "%s" in "%s" ->' % (pattern, text), if re.search(pattern, text): print 'found a match!' else: print 'no match' abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com' emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc) for email in emails: print email # Example of re.M or Multiline Flags import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print k1 print k2
Проверьте Python ЗНАНИЯ
1. Какой метод используется для поиска всех вхождений шаблона в строку?
- исследовать()
- re.match ()
- re.findall ()
- пере.разделить()
2. Что представляет собой класс символов \d в регулярных выражениях?
- Любая цифра (0-9)
- Любой нецифровой символ
- Любой пробельный символ
- Любая буква или цифра
3. Какую функцию вы бы использовали для разделения строки на основе пробелов?
- re.split(r'\s', строка)
- re.findall(r'\w+', строка)
- повторное сопоставление(r'\s+', строка)
- re.split(r'\w+', строка)
4. В чем основное различие между re.match() и re.search()?
- re.match() ищет шаблон в начале строки, тогда как re.search() ищет шаблон в любом месте строки.
- re.match() возвращает все совпадения, а re.search() возвращает первое совпадение.
- re.search() быстрее, чем re.match().
- Обе функции ведут себя одинаково.
Резюме
Регулярное выражение в язык программирования — это специальная текстовая строка, используемая для описания шаблона поиска. Оно включает цифры, знаки препинания, а также все специальные символы, такие как $#@!% и т. д. Выражение может включать в себя буквальные значения.
- Сопоставление текста
- Повторение
- разветвление
- Узор-композиция и т.д.
In Pythonрегулярное выражение обозначается как RE (RE, регулярные выражения или шаблоны регулярных выражений) внедряются через Python повторный модуль.
- модуль «re» в комплекте Python в основном используется для поиска и обработки строк
- Также часто используется для «скрапинга» веб-страниц (извлечение большого количества данных с веб-сайтов).
- Методы регулярных выражений включают в себя re.match(),re.search()& re.findall()
- Другой Python Методы замены RegEx — это sub() и subn(), которые используются для замены совпадающих строк в re.
- Python Флаги Много Python Методы регулярных выражений и функции регулярных выражений принимают необязательный аргумент, называемый флагами.
- Эти флаги могут изменить значение данного шаблона Regex.
- Различный Python флаги, используемые в методах регулярных выражений: re.M, re.I, re.S и т. д.