Предварительное условие: Регулярное выражение с примерами | Python
Регулярное выражение (иногда называемое рациональным выражением) представляет собой последовательность символов, определяющих шаблон поиска, в основном для использования при сопоставлении шаблонов со строками или сопоставлении строк, т. е. операциях, подобных “найти и заменить». Регулярные выражения-это обобщенный способ сопоставления шаблонов с последовательностями символов.
Модуль регулярных выражений (RE) определяет набор строк (шаблон), который ему соответствует. Чтобы понять аналогию с RE, метасимволы полезны, важны и будут использоваться в функциях модуля re.
Существует в общей сложности 14 метасимволов, и они будут обсуждаться по мере их включения в функции:
\ Используется для удаления специального значения символа
, следующего за ним (обсуждается ниже)
[] Представляет класс символов
^ Соответствует началу
$ Соответствует концу
. Соответствует любому символу, кроме новой строки
? Соответствует нулю или одному вхождению.
| Означает ИЛИ (Совпадает с любым из символов
, разделенных им.
* Любое количество случаев (включая 0 случаев)
+ Одно или несколько происшествий
{} Укажите количество совпадений предыдущего повторения
.
() Заключите группу REs
re.search() (повторный поиск)
метод re.search() либо не возвращает ничего (если шаблон не совпадает), либо возвращает re.MatchObject, содержащий информацию о соответствующей части строки. Этот метод останавливается после первого совпадения, поэтому он лучше всего подходит для тестирования регулярного выражения, а не для извлечения данных.
Пример:
# A Python program to demonstrate working of re.match().
import re
# Lets use a regular expression to match a date string
# in the form of Month name followed by day number
regex = r"([a-zA-Z]+) (\d+)"
match = re.search(regex, "I was born on June 24")
if match != None:
# We reach here when the expression "([a-zA-Z]+) (\d+)"
# matches the date string.
# This will print [14, 21), since it matches at index 14
# and ends at 21.
print("Match at index % s, % s" % (match.start(), match.end()))
# We us group() method to get all the matches and
# captured groups. The groups contain the matched values.
# In particular:
# match.group(0) always returns the fully matched string
# match.group(1) match.group(2), ... return the capture
# groups in order from left to right in the input string
# match.group() is equivalent to match.group(0)
# So this will print "June 24"
print("Full match: % s" % (match.group(0)))
# So this will print "June"
print("Month: % s" % (match.group(1)))
# So this will print "24"
print("Day: % s" % (match.group(2)))
else:
print("The regex pattern does not match.")
Выход:
Match at index 14, 21
Full match: June 24
Month: June
Day: 24
re.findall() (найди все)
Возвращает все неперекрывающиеся совпадения шаблона в строке в виде списка строк. Строка сканируется слева направо, и совпадения возвращаются в найденном порядке.
Пример:
# A Python program to demonstrate working of
# findall()
import re
# A sample text string where regular expression
# is searched.
string = """Hello my Number is 123456789 and
my friend's number is 987654321"""
# A sample regular expression to find digits.
regex = '\d+'
match = re.findall(regex, string)
print(match)
Выход:
['123456789', '987654321']