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, в основном используется для ввода строк.archiнг и манипуляции
  • Также часто используется для веб-страницы «Зачистка(извлечение большого количества данных с веб-сайтов)

Мы начнем урок по выражениям с этого простого упражнения, используя выражения (w+) и (^).

Пример выражения w+ и ^

  • «^»: Это выражение соответствует началу строки
  • «ш+«: Это выражение соответствует буквенно-цифровому символу в строке

Здесь мы увидим пример Python RegEx, показывающий, как мы можем использовать выражения w+ и ^ в нашем коде. Мы рассмотрим функцию re.findall() в Python, later в этом уроке, но какое-то время мы просто фокусируемся на выражениях \w+ и \^.

Например, для нашей строки «guru99, образование — это весело», если мы выполним код с помощью w+ и ^, на выходе будет «guru99».

Пример выражения w+ и ^

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)

Помните, что если вы удалите знак + из w+, вывод изменится и выдаст только первый символ первой буквы, то есть [g]

Пример выражения \s в функции re.split

  • «s»: это выражение используется для создания пробела в строке.

Чтобы понять, как работает это регулярное выражение в Python, мы начнем с простого примера функции разделения Python RegEx. В примере мы разделили каждое слово с помощью функции «re.split» и в то же время использовали выражение \s, которое позволяет анализировать каждое слово в строке отдельно.

Выражение \s в функции re.split

Когда вы выполните этот код, он выдаст вам выходные данные ['мы', 'есть', 'разделение', 'the', 'слова'].

Теперь давайте посмотрим, что произойдет, если вы удалите «\» из s. В выходных данных нет алфавита «s», это связано с тем, что мы удалили «\» из строки, и он оценивает «s» как обычный символ и, таким образом, разделяет слова везде, где он находит «s» в строке.

Выражение \s в функции re.split

Точно так же существует ряд других регулярных выражений 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» предоставляет несколько методов для фактического выполнения запросов к входной строке. Мы увидим методы re в Python:

  • re.match ()
  • исследовать()
  • re.findall ()

Внимание: на основе регулярных выражений Python предлагает две разные примитивные операции. Метод match проверяет совпадение только в начале строки, тогда как метод search проверяет совпадение в любом месте строки.

re.match ()

re.match () Функция re в Python будет искать шаблон регулярного выражения и возвращать первое вхождение. Метод Python RegEx Match проверяет совпадение только в начале строки. Итак, если совпадение найдено в первой строке, оно возвращает объект совпадения. Но если совпадение найдено в какой-либо другой строке, функция Python RegEx Match возвращает значение null.

Например, рассмотрим следующееwing код функции Python re.match(). Выражения «w+» и «\W» будут соответствовать словам, начинающимся с буквы «g», и после этого все, что не начинается с «g», не идентифицируется. Чтобы проверить соответствие каждого элемента в списке или строке, мы запускаем цикл for в этом примере Python re.match().

re.match ()

re.search(): поиск шаблона в тексте

исследовать() функция будет искать шаблон регулярного выражения и возвращать первое вхождение. В отличие от Python re.match(), он проверит все строки входной строки. Функция Python re.search() возвращает объект соответствия, когда шаблон найден, и «ноль», если шаблон не найден.

Как использовать поиск()?

Чтобы использовать функцию search(), вам необходимо сначала импортировать модуль Python re, а затем выполнить код. Функция Python re.search() сканирует «шаблон» и «текст» из нашей основной строки.

используйте поиск()

Например, здесь мы ищем две литеральные строки «Тестирование программного обеспечения» «guru99» в текстовой строке «Программное обеспечение». Тестирование это весело". Для «тестирования программного обеспечения» мы нашли совпадение, поэтому он возвращает выходные данные примера Python re.search() как «найдено совпадение», тогда как для слова «guru99» мы не смогли найти в строке, поэтому он возвращает выходные данные как «Нет совпадения». ».

re.findall ()

найти все() Модуль используется для поиска «всех» вхождений, соответствующих заданному шаблону. Напротив, модуль search() вернет только первое вхождение, соответствующее указанному шаблону. findall() будет перебирать все строки файла и возвращать все непересекающиеся совпадения шаблона за один шаг.

Как использовать re.findall() в Python?

Здесь у нас есть список электронныхmail адреса, и мы хотим, чтобы все электронныеmail адреса, которые нужно извлечь из списка, мы используем метод re.findall() в Python. Он найдет все электронныеmail адреса из списка.

Используйте 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 Regex. Чтобы понять это, мы увидим один или два примера этих флагов.

Различные флаги, используемые в Python, включают в себя

Синтаксис флагов регулярных выражений Что делает этот флаг
[re.M] Сделайте начало/конец, учитывайте каждую строку
[о.Я] Он игнорирует регистр
[относительно С] Делать [ . ]
[re.U] Make {\w,\W,\b,\B} соответствует правилам Юникода
[относительно Л] Сделать {\w,\W,\b,\B} соответствующим локали
[ре.X] Разрешить комментарии в Regex

Пример re.M или многострочных флагов

В многострочном режиме символ шаблона [^] соответствует первому символу строки и началу каждой строки (следуйтеwing сразу после каждой новой строки). В то время как выражение маленькая буква «w» используется для обозначения пробела символами. Когда вы запускаете код, первая переменная «k1» выводит только символ «g» для слова guru99, а когда вы добавляете многострочный флаг, она извлекает первые символы всех элементов строки.

Пример re.M или многострочных флагов

Вот код

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».
  • Итак, разницу мы можем увидеть после и до добавления нескольких строк в приведенном выше примере.

Подобноwiseвы также можете использовать другие флаги Python, такие как re.U (Юникод), re.L (следовать языковому стандарту), re.X (разрешить комментарии) и т. д.

Пример Python 2

Вышеуказанные коды являются примерами Python 3. Если вы хотите работать на Python 2, рассмотрите следующее:wing код.

# 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 регулярное выражение обозначается как RE (RE, регулярные выражения или шаблоны регулярных выражений внедряются через модуль re Python).

  • Модуль «re», включенный в состав Python, в основном используется для ввода строк.archiнг и манипуляции
  • Также часто используется для «скрапинга» веб-страниц (извлечение большого количества данных с веб-сайтов).
  • Методы регулярных выражений включают в себя re.match(),re.search()& re.findall()
  • Другими методами замены регулярных выражений Python являются sub() и subn(), которые используются для замены совпадающих строк в re.
  • Флаги Python Многие методы регулярных выражений Python и функции регулярных выражений принимают необязательный аргумент, называемый флагами.
  • Эти флаги могут изменить значение данного шаблона Regex.
  • В методах регулярных выражений используются различные флаги Python: re.M, re.I, re.S и т. д.