

Регулярное выражение
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
14 questions
Заключение
Presentation
•
11th Grade
15 questions
Архитектура барокко
Presentation
•
11th Grade
13 questions
Advanced Mole Conversions
Presentation
•
10th Grade
11 questions
Density
Presentation
•
10th Grade
9 questions
-ed -ing adjectives
Presentation
•
11th Grade
14 questions
Opinion and Thought
Presentation
•
11th Grade
15 questions
Второстепенные члены предложения 11класс
Presentation
•
11th Grade
14 questions
Repaso UNIT 2 - 1º ESO
Presentation
•
KG
Popular Resources on Wayground
20 questions
Math Review
Quiz
•
3rd Grade
15 questions
Fast food
Quiz
•
7th Grade
20 questions
Context Clues
Quiz
•
6th Grade
20 questions
Inferences
Quiz
•
4th Grade
19 questions
Classifying Quadrilaterals
Quiz
•
3rd Grade
20 questions
Figurative Language Review
Quiz
•
6th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
10 questions
Identify Fractions, Mixed Numbers & Improper Fractions
Quiz
•
3rd - 4th Grade
Discover more resources for Engineering
10 questions
Fact Check Ice Breaker: Two truths and a lie
Quiz
•
5th - 12th Grade
10 questions
Video Games
Quiz
•
6th - 12th Grade
15 questions
Memorial Day Trivia
Quiz
•
KG - 12th Grade
12 questions
Name that Candy
Quiz
•
KG - 12th Grade
20 questions
Guess The App
Quiz
•
KG - Professional Dev...
30 questions
K/H Final Review Part 1
Quiz
•
9th - 12th Grade
40 questions
NCFE Earth and Environmental Science Released Test
Quiz
•
9th - 12th Grade
22 questions
Revise and Edit Final Review 3
Quiz
•
8th - 12th Grade