Latest web development tutorials

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

Регулярные выражения представляют собой особую последовательность символов, он может помочь вам легко проверить, соответствует ли строка шаблону.

Python повторно модуль увеличивается, начиная с версии 1.5, регулярного выражения, которое обеспечивает Perl-стиль.

Модуль позволяет повторно языка Python имеет все функции регулярных выражений.

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

Re модуль также обеспечивает способ в соответствии с этими функциями При работе функций узора строку в качестве первого аргумента.

В этом разделе представлены общие функции обработки регулярное выражение Python.


re.match функция

re.match пытается сопоставить шаблон из исходного положения строки, если не согласующий стартовая позиция является успешным, матч () не возвращает ничего.

Синтаксис функции:

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

Параметры функции:

параметры описание
шаблон Матч регулярное выражение
строка Строка для соответствия.
флаги Флаг, регулярное выражение соответствия используется для управления, например: соответствует ли чувствительны к регистру, многострочный, и так далее.

Успешный метод матча re.match возвращает объект соответствия, в противном случае None.

Мы можем использовать эту группу (NUM) или группы () функцию, чтобы получить объекты, соответствующие выражения совпадают.

Соответствующие методы объекта описание
группа (Num = 0) Весь соответствующий строковое выражение, группа () может ввести более одного номера группы, в этом случае он будет возвращать значение, соответствующее этим группам кортежей.
группы () Он возвращает кортеж из всех групп строки, от 1 до количества, содержащегося в группе.

Пример 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.match('com', 'www.w3big.com'))         # 不在起始位置匹配

Запуск в приведенном выше примере выход:

(0, 3)
None

Пример 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Результаты приведенных выше примерах, являются следующими:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

re.search метод

re.search сканировать всю строку и возвращает первый успешный матч.

Синтаксис функции:

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

Параметры функции:

параметры описание
шаблон Матч регулярное выражение
строка Строка для соответствия.
флаги Флаг, регулярное выражение соответствия используется для управления, например: соответствует ли чувствительны к регистру, многострочный, и так далее.

Успешный метод матча re.search возвращает объект соответствия, в противном случае None.

Мы можем использовать эту группу (NUM) или группы () функцию, чтобы получить объекты, соответствующие выражения совпадают.

Соответствующие методы объекта описание
группа (Num = 0) Весь соответствующий строковое выражение, группа () может ввести более одного номера группы, в этом случае он будет возвращать значение, соответствующее этим группам кортежей.
группы () Он возвращает кортеж из всех групп строки, от 1 до количества, содержащегося в группе.

Пример 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.search('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.search('com', 'www.w3big.com').span())         # 不在起始位置匹配

Запуск в приведенном выше примере выход:

(0, 3)
(11, 14)

Пример 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"
Результаты приведенных выше примерах, являются следующими:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Разность re.match и re.search

re.match соответствует только начало строки, если начало строки не соответствует регулярному выражению, совпадение не найдено, функция возвращает None, и re.search совпадают со строкой, пока не найдет совпадения.

Пример:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print "search --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"
Примеры приведенных выше результатов заключаются в следующем:
No match!!
search --> matchObj.group() :  dogs

Поиск и замена

Модуль повторного Python предоставляет re.sub на матч замены строки.

Синтаксис:

re.sub(pattern, repl, string, max=0)

Возвращаемая строка это строка с крайней левой RE матчей не будет повторяться, чтобы заменить. Если шаблон не найден, то символы будут возвращены без изменений.

Необязательный счетчик параметр является максимальное количество раз замену соответствующий шаблон, счетчик должен быть неотрицательным целым числом. Значение по умолчанию 0 означает, что для замены всех вхождений.

Пример:

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num
Результаты приведенных выше примерах, являются следующими:
Phone Num :  2004-959-559
Phone Num :  2004959559

Regex модификатор - необязательный флаг

Регулярные выражения могут содержать необязательные флаги модификаторов для управления режимом соответствия. Модификатор задается в качестве дополнительного флага. (|) Чтобы указать несколько флагов, которые могут быть Побитовая или через. Как re.I | re.M установлен в положение I и M флагов:

Модификаторы описание
re.I Так что сравнение не чувствительны к регистру
re.L Выполните идентификацию локализации (локали известно) соответствия
re.M соответствующий Многоканальный, воздействуя ^ и $
re.S Итак, в том числе переводы строк соответствовать всем символам
re.U Согласно решения Unicode набор символов символов. Этот флаг влияет \ ш, \ W, \ Ь, \ B.
re.X Этот флаг, давая вам более гибкий формат, так что вы будете писать регулярные выражения проще для понимания.

Шаблон регулярного выражения

Строка шаблона, используя специальный синтаксис для обозначения регулярное выражение:

Буквы и цифры сами. Регулярное выражение при букв и цифр совпадают ту же строку.

Большинство из букв и цифр будет иметь различное значение, когда ему предшествует обратный слэш.

Пунктуация спасшемся только тогда, когда сам матч, или они представляют собой особый смысл.

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

Поскольку регулярные выражения обычно содержат символы, так что вам лучше использовать исходную строку, чтобы представлять их. Элементы схемы (например, г '/ т', что эквивалентно '// Т') совпадает с соответствующим специальные символы.

В следующей таблице перечислены синтаксис регулярных выражений шаблон конкретных элементов. Если ваши модели использования, обеспечивая при этом необязательные флаги аргумент, значение некоторых элементов рисунка будет меняться.

режим описание
^ Соответствует началу строки
$ Соответствует концу строки.
, Соответствует любому символу, кроме символа новой строки, если указан флаг re.DOTALL, вы можете соответствовать любому символу, включая символ новой строки.
[...] Он используется для представления группы символов, перечисленных отдельно: [АМК] матч 'а', 'т' или 'K'
[^ ...] Не [] символов: [^ ABC] соответствует в дополнение к а, Ь, с символами.
Re * 0 или более выражениям.
Re + Один или более совпадающих выражений.
повторно? Матч 0 или 1 по предшествующих регулярных выражений для определения сегментов, не жадный путь
Re {п}
повторно {п,} Точное соответствие п предыдущего выражения.
Re {п, т} Матч п в т раз по предшествующих регулярных выражений для определения сегментов, жадный путь
а | б Совпадение или б
(Re) Выражение матч G в скобках, также представляет собой группу
(? Imx) Регулярное выражение состоит из трех дополнительных флагов: я, м, или х. Она влияет только на область в скобках.
(? -imx) Регулярные выражения Закрыть я, м, или х необязательный флаг. Она влияет только на область в скобках.
(?: Re) Аналогично (...), но не представляет собой группу,
(Imx :? Re) Я использую в круглые скобки, м или х необязательный флаг
(-imx :? Re) Не используйте I, M в круглых скобках, или х дополнительный флаг
(? # ...) Примечание.
(? = Re) Форвард уверен разделитель. Если содержится регулярное выражение, представленное здесь ..., успешно матчи в текущем местоположении, и не иначе. Тем не менее, как только содержала выражение была опробована, согласующий двигатель не продвигается, остальная часть узора даже попробовать разделителем правильно.
(?! Re) Нападающий отрицанием разделителем. И, конечно, противоречит разделителем, успешным, когда содержащийся выражение не совпадает с текущей позиции в строке
(?> Re) Независимый поиск по шаблону, устраняя откаты.
\ W Матч алфавитно-цифровой и нижнее подчеркивание
\ W Матч не буквенно-цифровых и подчеркивания
\ S Соответствует любой символ пробела, что эквивалентно [\ т \ п \ г \ F].
\ S Соответствует любой непустой символ
\ D Соответствует любому количеству, которое эквивалентно [0-9].
\ D Соответствует любому нечисловая
\ A Соответствует началу строки
\ Z Матч конец строки, если она существует символ новой строки, только до конца строки, чтобы соответствовать новой строки. с
\ Z конец строки Match
\ G Матч Матч завершен последнюю позицию.
\ B Матчи границы слова, то есть, оно относится к месту и пробелы между словами. Например, 'эр \ Ъ' не может сравниться с "никогда" в "эр", но не может сравниться с "глаголом" в "эр".
\ B Матч граница слова. 'Er \ B' может соответствовать "глагол" в "эр", но не может сравниться с "никогда" в "эр".
\ N, \ т, и тому подобное. Соответствует новой строки. Соответствует символу табуляции. подождите
\ 1 ... \ 9 Соответствующие подвыражения п-го пакета.
\ 10 Матч первые п пакетов подвыражению, если он после матча. В противном случае, выражение относится к восьмеричный код.

Примеры регулярных выражений

Символьные матчи

примеров описание
питон Matching "питон".

Классы персонажей

примеров описание
[Pp] ython Matching "Python" или "Python"
руб [вы] Матч "Рубин" или "деревенщина"
[AEIOU] Любой из букв в скобках соответствия
[0-9] Соответствует любой цифре. Аналогично [0123456789]
[Az] Соответствует любому строчных букв
[AZ] Соответствует любой верхний регистр
[A-Za-z0-9] Матчи любые буквы и цифры
[^ AEIOU] В дополнение ко всем, кроме букв символов аеиоу
[^ 0-9] Соответствующие символы, кроме цифр

Специальные классы символов

примеров описание
, Соответствует любому одному символу, кроме "\ п" есть. Для того, чтобы соответствовать в том числе '\ N', в том числе любые символы, такие, как использование '[. \ N]' режим.
\ D Совпадает с цифрой. Эквивалент [0-9].
\ D Соответствует не цифровых символов. Это эквивалентно [^ 0-9].
\ S Соответствует пробельные символы, включая пробелы, символы табуляции, разрывы страниц, и так далее. Эквивалентно [\ F \ п \ г \ т \ v].
\ S Соответствует непробельного символы. Эквивалентно [^ \ е \ п \ г \ т \ v].
\ W Любое слово символ, включая подчеркивание. Это эквивалентно "[A-Za-z0-9_] '.
\ W Соответствует любому символу, кроме буквы. Это эквивалентно '[^ A-Za-z0-9_]'.