Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Python RegEx:re.match(), re.search(), re.findall() с примером

Что такое регулярное выражение в Python?

Регулярное выражение (RE) в языке программирования — это специальная текстовая строка, используемая для описания шаблона поиска. Это чрезвычайно полезно для извлечения информации из текста, такого как код, файлы, журналы, электронные таблицы или даже документы.

При использовании регулярных выражений Python в первую очередь следует признать, что все, по сути, является символом, и мы пишем шаблоны для соответствия определенной последовательности символов, также называемой строкой. Ascii или латинские буквы — это те, которые есть на вашей клавиатуре, а Unicode используется для соответствия иностранному тексту. Он включает в себя цифры и знаки препинания, а также все специальные символы, такие как $#@!% и т. д.

В этом руководстве по Python RegEx мы изучим-

Например, регулярное выражение Python может указать программе искать определенный текст в строке, а затем соответствующим образом распечатать результат. Выражение может включать

Регулярное выражение или RegEx в Python обозначается как RE (RE, регулярные выражения или шаблон регулярных выражений), которые импортируются через модуль re. . Python поддерживает регулярные выражения через библиотеки. RegEx в Python поддерживает различные вещи, такие как модификаторы, идентификаторы и пробельные символы. .

<тд>. + * ? [] $ ^ () {} | \ <тд> <тд>? =соответствует 0 или 1 <тд> <тд> <тд> <тд> <тд>| соответствует или или x/y <тд>—————— <тд> <тд> <тд>—————— <тд>
Идентификаторы Модификаторы Пробелы Требуется побег
\d=любое число (цифра) \d представляет цифру. Пример:\d{1,5} будет объявлена ​​цифра между 1,5, например 424 444 545 и т. д. \n =новая строка
\D=все, кроме числа (не цифры) + =соответствует 1 или более \s=пробел
\s =пробел
(табуляция, пробел, новая строка и т. д.)
\t =вкладка
\S=что угодно, кроме пробела * =0 или больше \e =escape
\w =буквы ( Соответствует буквенно-цифровому символу, включая «_») $ соответствует концу строки \r =возврат каретки
\W =все, кроме букв ( Соответствует небуквенно-цифровому символу, кроме «_») ^ соответствует началу строки \f=подача формы
. =все, кроме букв (точек)
\b =любой символ, кроме новой строки [] =диапазон или «дисперсия» —————-
\. {x} =это количество предшествующего кода

Синтаксис регулярных выражений (RE)

import re

Мы начнем изучение выражений с этого простого упражнения, используя выражения (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

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

Когда вы выполните этот код, он выдаст вам результат [‘мы’, ‘есть’, ‘расщепление’, ‘то’, ‘слова’].

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

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

re.match()

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

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

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

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

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

Чтобы использовать функцию search(), вам нужно сначала импортировать модуль Python re, а затем выполнить код. Функция 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 = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

Флаги Python

Многие методы регулярных выражений Python и функции регулярных выражений принимают необязательный аргумент, называемый флагами. Эти флаги могут изменить значение данного шаблона Python Regex. Чтобы понять это, мы рассмотрим один или два примера этих флагов.

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

Синтаксис флагов регулярных выражений Что делает этот флаг
[re.M] Заставить начало/конец учитывать каждую строку
[re.I] Игнорирует регистр
[re.S] Сделать [ . ]
[re.U] Сделать { \w,\W,\b,\B} в соответствии с правилами Unicode
[re.L] Заставить {\w,\W,\b,\B} следовать языковому стандарту
[re.X] Разрешить комментарии в регулярном выражении

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

В многострочном режиме символ шаблона [^] соответствует первому символу строки и началу каждой строки (после каждой новой строки). В то время как выражение маленькая «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)

Кроме того, вы также можете использовать другие флаги Python, такие как re.U (Unicode), 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 = '[email protected], [email protected], [email protected]'
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.


Python

  1. Функция Python String strip() с ПРИМЕРОМ
  2. Количество строк Python() с ПРИМЕРАМИ
  3. Python String format() Объясните с ПРИМЕРАМИ
  4. Длина строки Python | Пример метода len()
  5. Метод Python String find() с примерами
  6. Функция Python round() с ПРИМЕРАМИ
  7. Функция Python map() с ПРИМЕРАМИ
  8. Python Timeit() с примерами
  9. Счетчик Python в коллекциях с примером
  10. Счетчик списка Python() с ПРИМЕРАМИ