Рубрики
Без рубрики

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

Введение Регулярные выражения-это последовательность символов, используемая для поиска и замены шаблонов в строке, проще говоря, это инструмент для сопоставления шаблонов в тексте. В python у нас есть модуль “re”…

Автор оригинала: Sadhana Reddy.

Регулярные выражения-это последовательность символов, используемая для поиска и замены шаблонов в строке, проще говоря, это инструмент для сопоставления шаблонов в тексте.

В python у нас есть “re” модуль, который нам нужно импортировать, прежде чем мы сможем начать

import re

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

  • Поиск строки
  • Заменить часть строки
  • Поиск по строке
  • Разбейте нашу строку на подстроки

Методы регулярных выражений

\w -> Совпадения с буквенно-цифровыми символами [a-z,A-Z,0-9] \W – > Совпадения с не буквенно-цифровыми символами \d -> Совпадения с цифрами [0-9] \D -> Совпадения со всеми не цифрами \s- > Совпадения с одним пробелом \S —> Совпадения, за исключением расширения пространства все \t -> Вкладка “Совпадения” \n -> Совпадения новой строки \r -> Возврат совпадений . –> Соответствует любому символу, кроме \n () – > группирует регулярные выражения и возвращает сопоставленный текст a|b -> Соответствует либо a, либо b ^ -> начальная позиция $ -> конечная позиция {m} -> Соответствует и должно соответствовать m {m,} -> Соответствует больше, чем m {m,n} -> Соответствует цифре между m и n по длине ? –> -> Соответствует одному или нулевому вхождению паттерна плюс(+) –> Соответствует одному или нескольким вхождениям паттерна

\w -> Совпадения с буквенно-цифровыми символами [a-z,A-Z,0-9] \W - > Совпадения с не буквенно-цифровыми символами \d -> Совпадения с цифрами [0-9] \D -> Совпадения со всеми не цифрами \s- > Совпадения с одним пробелом \S ---> Совпадения, за исключением расширения пространства все \t -> Вкладка Совпадения новой строки \r -> Возврат совпадений . –> Соответствует любому символу, кроме \n () – > группирует регулярные выражения и возвращает сопоставленный текст a|b -> Соответствует либо a, либо b ^ -> начальная позиция $ -> конечная позиция {m} -> Соответствует и должно соответствовать m {m,} -> Соответствует больше, чем m {m,n} -> Соответствует цифре между m и n по длине ? –> -> Соответствует одному или нулевому вхождению паттерна плюс(+) –> Соответствует одному или нескольким вхождениям паттерна” />

sub —-> Найдите все подстроки, где re совпадает, и замените их другой строкой subn – – – – > такой же, как sub (), но возвращает новую строку и количество замен start – – – – > Это даст начальную позицию end – – – – > Это даст конечную позицию span – – – – > Это даст начальную и конечную позиции подстроки search – – – – > Поиск всей строки match – – – – > Поиск первого слова findall – – – – > Несколько раз поиск в строке compile – – – – – > Мы можем скомпилировать шаблон в объект pattern

Здесь я показываю, как использовать некоторые из этих методов

re.поиск()

Этот метод поиска будет искать по всей строке и дает результат, если более одного совпадения, он возвращает первое появление шаблона поиска

Пример :

import re
s=("Hi i am python and my no is 7867465789")
z=re.search('\d{10}',s)
print(z)
print(z.group(0))
print(z.start())
print(z.end())
Output:

7867465789
28
38
print(re.search(r'\d{13}', '9876543210999999999999').group())
Output: 9876543210999
import re
s = ("hi Welcome to python course")
g=re.search('welcome',s,re.I|re.M)
print(g)
Output: 

ре.матч()

Он будет искать первое слово в данной строке. Если первое слово будет совпадать, оно выдаст требуемый вывод, если первое слово не совпадет, оно выдаст None в качестве вывода

Пример :

import re
s=("hi.hello Welcome, my name is python")
y=re.match('hi',s)
print(y)
print(y.group(0))
Output:

hi
d=re.match('hello',s)
print(d)
Output: None

Потому что привет – это не первое слово в строке

re.findall()

Findall возвращает все неперекрывающиеся совпадения шаблонов в строке.

Пример :

import re
s=("hey hi hello how are you?")
i=re.findall('h',s)
print(i)
Output: ['h', 'h', 'h', 'h']
import re
s = ("hi i am sadhana and my email id is sadhana-2018@gmail.com, my another email id is sadhana.python@gmail.com")
# here re.findall() returns a list of all the found email strings
z = re.findall(r'[\w\.-]+@[\w\.-]+',s)
print(z)
Output:
['sadhana-2018@gmail.com', 'sadhana.python@gmail.com']
import re
print(re.findall(r'\w','i love python'))
Output: ['i', 'l', 'o', 'v', 'e', 'p', 'y', 't', 'h', 'o', 'n']

Это помогает найти шаблон и заменить его новой подстрокой.

Пример :

import re
result=re.sub(r'India','the World','Codementor is the great platform in India')
print(result)
Output:
Codementor is the great platform in the World

re.компиляция()

Мы можем объединить шаблон регулярного выражения в объекты шаблона,которые можно использовать для сопоставления шаблонов.Это также помогает искать шаблон, не переписывая его

Пример :

import re
pattern=re.compile('good')
a=pattern.findall('When you think positive good things happen')
print (a)
b=pattern.findall('Life is all about having a good time')
print (b)
Output:
['good']
['good']

Упражнения

1. Извлеките все символы из заданной строки

import re
a=re.findall(r'.','Sadhana loves Python')
print (a)
Output:
['S', 'a', 'd', 'h', 'a', 'n', 'a', ' ', 'l', 'o', 'v', 'e', 's', ' ', 'P', 'y', 't', 'h', 'o', 'n']

2. Извлеките каждое слово из заданной строки

import re
a=re.findall(r'\w*','My name is sadhana')
print (a)
Output:
['My', '', 'name', '', 'is', '', 'sadhana', '']

3. извлечение чисел из заданной строки

import re
a=re.findall(r'\d+','My name is sadhana, my number is 32456')
print (a)
Output: ['32456']
import re
a=re.findall(r'\d*','My name is sadhana, my number is 32456')
print (a)
Output: ['3', '2', '4', '5', '6']

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

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