Учебники

15) Регулярные выражения Python

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

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

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

В этом уроке мы узнаем

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

  • Соответствие текста
  • Репетиция
  • разветвление
  • Узор-композиция и др.

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

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

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

	import re
  • Модуль re, включенный в Python, в основном используется для поиска и манипулирования строками
  • Также часто используется для веб-страницы «Соскоб» (извлечение большого количества данных с веб-сайтов)

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

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

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

Здесь мы увидим пример того, как мы можем использовать выражения w + и ^ в нашем коде. Мы рассмотрим функцию re.findall позже в этом уроке, но какое-то время мы просто сосредоточимся на \ w + и \ ^ expression.

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

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

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

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

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

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

Когда вы выполните этот код, он выдаст вам выходные данные [‘we’, ‘are’, ‘split’, ‘the’, ‘words’].

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

Аналогично, в 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')))

Далее мы рассмотрим типы методов, которые используются с регулярными выражениями.

Использование методов регулярных выражений

Пакет «re» предоставляет несколько методов для выполнения запросов к входной строке. Метод, который мы увидим

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

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

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

Например, здесь мы ищем две буквенные строки «Тестирование программного обеспечения», «guru99», в текстовой строке « Тестирование программного обеспечения — это весело». Для «тестирования программного обеспечения» мы нашли совпадение, следовательно, он возвращает вывод как «найдено совпадение», в то время как для слова «guru99» мы не смогли найти в строке, следовательно, он возвращает вывод как «Нет совпадения».

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), Flags

Вот полный код

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 Regex и функции Regex принимают необязательный аргумент, называемый Flags. Эти флаги могут изменить значение данного шаблона Regex. Чтобы понять это, мы увидим один или два примера этих флагов.

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

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

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

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

Учебник по регулярным выражениям Python: re.match (), re.search (), re.findall (), 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)
  • Мы объявили переменную хх для строки "guru99…. Careerguru99… .selenium"
  • Запустите код без использования флагов multiline, он выводит только 'g' из строк
  • Запустите код с флагом «multiline», когда вы печатаете «k2», он выводит как «g», «c» и «s»
  • Таким образом, разницу мы видим после и до добавления многострочных в приведенном выше примере.

Кроме того, вы также можете использовать другие флаги Python, такие как re.U (Unicode), re.L (Follow locale), re.X (Allow Comment) и т. Д.

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

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