You are currently viewing Регулярные выражения в Python – Набор 2 (Поиск, сопоставление и Поиск всех)

Регулярные выражения в Python – Набор 2 (Поиск, сопоставление и Поиск всех)

Регулярное выражение в Python с примерами | Набором 1
Модуль re обеспечивает поддержку регулярных выражений в Python. Ниже приведены основные методы в этом модуле.

Поиск вхождения шаблона

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.match()Эта функция пытается сопоставить шаблон со всей строкой. Функция re.match возвращает объект соответствия при успешном выполнении, при сбое-нет.

re.match(pattern, string, flags=0)

pattern : Regular expression to be matched.
string : String where pattern is searched
flags : We can specify different flags 
        using bitwise OR (|). 
# A Python program to demonstrate working
# of re.match().
import re
	
# a sample function that uses regular expressions
# to find month and day of a date.
def findMonthAndDate(string):
		
	regex = r"([a-zA-Z]+) (\d+)"
	match = re.match(regex, string)
		
	if match == None:
		print ("Not a valid date")
		return
	
	print ("Given Data: %s" % (match.group()))
	print ("Month: %s" % (match.group(1)))
	print ("Day: %s" % (match.group(2)))
	
		
# Driver Code
findMonthAndDate("Jun 24")
print("")
findMonthAndDate("I was born on June 24")

Выход:

Given Data: Jun 24
Month: Jun
Day: 24

Not a valid date

Нахождение всех вхождений шаблона 

re.findall()Возвращает все неперекрывающиеся совпадения шаблона в строке в виде списка строк. Строка сканируется слева направо, и совпадения возвращаются в найденном порядке (источник : Документы на Python).

# 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)

# This example is contributed by Ayush Saluja.

Выход :

['123456789', '987654321']

Регулярное выражение-это обширная тема. Это полная библиотека. Регулярные выражения могут многое сделать. Вы можете сопоставлять, искать, заменять, извлекать множество данных. Например, приведенный ниже небольшой код настолько мощный, что может извлекать адрес электронной почты из текста. Таким образом, мы можем легко создавать наши собственные веб-сканеры и скрапперы на python.Посмотрите на приведенное ниже регулярное выражение.

# извлечь все адреса электронной почты и добавить их в результирующий набор
new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", 
 text, re.I))

Вскоре мы обсудим дополнительные методы регулярных выражений.