Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе. |
Регулярные выражения
23.4. Символ "Escape"
Поскольку мы используем специальные символы в регулярных выражениях для указания начала или конца строки и подстановки произвольного символа, нам необходим также способ указать, что эти символы в отдельных случаях используются как "нормальные", чтобы просто сопоставить их с обычными символами, такими как доллар "$" или крышка "^".
Это можно сделать, поставив перед защищаемым символом обратную косую черту "\" (backslash). Например, можно найти обозначения денежных сумм с помощью следующего регулярного выражения:
import re x = 'We just received $10.00 for cookies.' y = re.findall('\$[0-9.]+',x)
Поскольку мы поставили обратную косую черту перед знаком доллара, он будет сопоставляться с реальным символом доллара во входной строке, вместо того, чтобы обозначать конец входной строки; оставшаяся часть регулярного выражения сопоставляется с одной или более цифрой или точкой.
Замечание: символы внутри квадратных скобок не считаются специальными. Когда мы пишем "[0-9.]", это действительно означает цифру или точку. Вне квадратных скобок точка означает подстановку произвольного символа. Внутри них точка означает точку.
23.5. Выводы
Пока мы лишь затронули тематику регулярных выражений, познакомившись с языком задания регулярных выражений. Они представляют собой шаблоны поиска, включающие специальные символы. С помощью регулярных выражений мы определяем задание для поисковой системы – что именно мы хотим найти и что извлечь из найденных строк. Ниже приведены некоторые специальные символы и специальные последовательности:
^
Соответствует началу строки.
$
Соответствует концу строки.
.
Соответствует любому символу (символ подстановки, wildcard).
\s
Соответствует пробельному символу (whitespace).
\S
Соответствует непробельному символу (противоположен \s).
*
Действует на непосредственно предшествующий символ и соответствует цепочке из нуля или более предшествующих символов.
*?
Действует на непосредственно предшествующий символ и соответствует цепочке из нуля или более предшествующих символов, выделенной в "нежадном" режиме.
+
Действует на непосредственно предшествующий символ и соответствует цепочке из одного или более предшествующих символов.
+?
Действует на непосредственно предшествующий символ и соответствует цепочке из одного или более предшествующих символов, выделенной в "нежадном" режиме.
[aeiou]
Соответствует одному символу из указанного набора. В данном примере может сопоставляться символам "a", "e", "i", "o", "u" и никаким другим.
[a-z0-9]
Можно указывать диапазон символов с помощью знака минус. В данном примере задается один символ, являющийся строчной буквой или цифрой.
[^A-Za-z]
Если первым символом в обозначении набора является крышка "^", то смысл обозначения меняется на обратный – любой символ, не входящий в указанный набор. В данном примере задается один символ, не являющийся прописной или строчной буквой.
( )
Круглые скобки в регулярном выражении игнорируются при сопоставлении строки и регулярного выражения, но позволяют извлечь указанную в скобках часть строки вместо всей строки при использовании метода findall().
\b
Соответствует пустой подстроке в начале или конце слова.
\B
Соответствует пустой подстроке всюду, за исключением начала или конца слова.
\d
Соответствует десятичной цифре; эквивалентно выражению [0-9].
\D
Соответствует любому символу, отличному от десятичной цифры; эквивалентно выражению [^0-9].