

Регулярное выражение
Presentation
•
Engineering
•
11th Grade
•
Easy
Екатерина Иванова
Used 4+ times
FREE Resource
16 Slides • 3 Questions
1
Регулярное выражение
2
Регулярное выражение — это строка, задающая шаблон поиска подстрок в тексте. Одному шаблону может соответствовать много разных строчек.
Регулярное выражение, или коротко «регулярка», состоит из обычных символов и специальных командных последовательностей. Например, \d задаёт любую цифру, а \d+ — задает любую последовательность из одной или более цифр.
3
4
Регулярные выражения, или коротко, регулярки — это очень мощный инструмент. Но использовать их следует с умом и осторожностью, и только там, где они действительно приносят пользу, а не вред.
Во-первых, плохо написанные регулярные выражения работают медленно.
Во-вторых, их зачастую очень сложно читать, особенно если регулярка написана не лично тобой пять минут назад.
В-третьих, очень часто даже небольшое изменение задачи (того, что требуется найти) приводит к значительному изменению выражения. Поэтому про регулярки часто говорят, что это write only code (код, который только пишут с нуля, но не читают и не правят).
5
6
7
8
Самое простое регулярное выражение – это точно заданная строка для поиска. Например, так можно найти слово в предложении:
s = "Карл у Клары украл кораллы."
9
Метод span для этого объекта показывает позиции найденного слова:
s = "Карл у Клары украл кораллы."
if m := re.search( "коралл", s ):
print( "Есть коралл!" )
print( m.span() )
else:
print( "Нет коралла." )
10
При поиске можно использовать шаблоны. Точка в строке поиска обозначает любой символ:
m = re.search( "к.ра", s )
По такому шаблону будет найдено «кора», «кура», «кара» и т. д.
s = "Кура кара кора икра кобура"
11
Метод group возвращает само найденное слово. При поиске учитывается регистр символов, поэтому первое слово «Кура» не совпало с образцом. Если передать функции search третий аргумент re.I (от англ. ignore case – не учитывать регистр)
m = re.search( "к.ра", s, re.I )
то мы найдём первое слово «Кура».
12
Метод group возвращает само найденное слово. При поиске учитывается регистр символов, поэтому первое слово «Кура» не совпало с образцом. Если передать функции search третий аргумент re.I (от англ. ignore case – не учитывать регистр)
m = re.search( "к.ра", s, re.I )
то мы найдём первое слово «Кура».
13
Функция findall возвращает массив все слов, соответствующих шаблону, но не даёт информации об их позициях в строке:
s = "Кура кара кора икра кобура"
m = re.findall( "к.ра", s )
print( m )
14
Open Ended
В тексте встречаются коды кабинетов, которые имею такой формат: «буква+"–"+три цифры». Буква в номере – это A, Б или У. Нужно вывести на экран все найденные коды кабинетов и их количество.
s = "А-213 Б-4 Б-219 Ф-215 У-514"
15
Код кабинета начинается с буквы А, Б или У. В шаблоне такой выбор обозначается как «[АБУ]». Затем идет дефис (минус), а потом – три цифры. Цифру в регулярном выражении обозначают как «\d», а количество задают в фигурных скобках. Таким образом, получается шаблон «[АБУ]-\d{3}». Вот пример программы:
s = "А-213 Б-4 Б-219 Ф-215 У-514"
m = re.findall( r"[АБУ]-\d{3}", s )
print( m )
Обратите внимание, что перед строкой шаблона стоит буква r (англ. raw – сырой, необработанный). Она отменяет специальное значение символа \, который используется в сочетаниях типа «\n» (новая строка).
16
Open Ended
В строке url записан URL-адрес веб-страницы. Требуется определить адрес сайт (IP-адрес или доменное имя).
17
Чтобы выделить имя сайта как отдельную строку, в шаблоне заключим его в круглые скобки. Такой приём позволяет образовать группу, и все найденные группы можно вывести с помощью метода groups:
m = re.search( r"https?://([^/]+)/", url )
print( m.groups() )# ('www.example.com',)
18
Open Ended
В некоторых странах используют формат записи даты «mm/dd/yyyy», где mm – номер месяца, dd – номер дня и yyyy – год. Требуется найти все такие последовательности и заменить формат вывода даты на российский: «dd.mm.yyyy».
Решение, использующее функцию sub (от англ. substitution – подставновка):
s = "Даты: 12/11/2022 и 01/03/2023."
19
sNew = re.sub( r"(\d{2})/(\d{2})/(\d{4})",
r"\2.\1.\3", s )
print( sNew )
Регулярное выражение
Show answer
Auto Play
Slide 1 / 19
SLIDE
Similar Resources on Wayground
17 questions
Crime & Punishment
Presentation
•
10th - 11th Grade
15 questions
Reformation
Presentation
•
10th Grade
14 questions
Compounding Interest
Presentation
•
11th - 12th Grade
15 questions
PERFECT TENSES
Presentation
•
11th Grade
13 questions
Квиз All Sports & SaM
Presentation
•
KG
14 questions
Main Idea Review
Presentation
•
11th Grade
12 questions
Announcement
Presentation
•
10th Grade
17 questions
Purpose of Tax Forms
Presentation
•
11th Grade
Popular Resources on Wayground
10 questions
HCS SCI 03 Summer School Review 4
Quiz
•
3rd Grade
11 questions
HSMS - Standard Response Protocol
Quiz
•
6th - 8th Grade
16 questions
1.1-1.2 Quiz Review
Quiz
•
9th - 12th Grade
12 questions
Exponent Expressions
Quiz
•
6th Grade
20 questions
Adding and Subtracting Integers
Quiz
•
6th - 7th Grade
11 questions
Northeast States
Quiz
•
3rd - 4th Grade
10 questions
Characterization
Quiz
•
3rd - 7th Grade
10 questions
Common Denominators
Quiz
•
5th Grade