Серия руководств по регулярным выражениям с использованием Python

Если вы наткнулись на эту статью и не знакомы с этой серией руководств по регулярным выражениям, не стесняйтесь взглянуть на оставшуюся часть серии (по порядку):

  1. Регулярные выражения: основы
  2. Регулярные выражения: группировка и символ вертикальной черты
  3. Регулярные выражения: повторение и жадное / не жадное сопоставление
  4. Регулярные выражения: классы символов и метод findall ()
  5. Регулярные выражения: точка-звезда и символы каретки / доллара
  6. Регулярные выражения: метод sub () и подробный режим

В этом руководстве мы углубимся в группировку и вертикальную черту специально для регулярного выражения.

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

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

Группы в регулярном выражении

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

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

Что, если мы хотим буквально найти скобки в шаблоне?

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

ПРИМЕЧАНИЕ.

\ (и \) соответствует буквальным скобкам в строке регулярного выражения.

Обратные косые черты в регулярном выражении

Обратная косая черта - это escape-символ в строках для любого языка программирования. Это означает, что обратная косая черта имеет предопределенное значение в таких языках, как Python или Java. Вы должны использовать двойную обратную косую черту, чтобы определить одиночную обратную косую черту. Если вы хотите определить \ w, вы должны использовать \ w в своем регулярном выражении. Если вы хотите использовать обратную косую черту в качестве литерала, вы должны ввести \\, поскольку \ также является escape-символом символ в регулярных выражениях.

Персонаж-трубка

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

Давайте посмотрим на следующий пример:

Посмотрите на строку 1 кода. Вы увидите, что мы начинаем шаблон регулярного выражения с поиска строки, которая начинается с Bat, а затем следуют альтернативные варианты: man , мобильный, вертолет и летучая мышь .

Этот шаблон регулярного выражения просто говорит: «Найдите мне строку, которая начинается с Bat и любой из текстов, прикрепленных к Bat допустим ».

Следующие строки могут быть сопоставлены: Batman, Batmobile, Batcopter , Batbat.

mo = batRegex.search(‘Batmotorcycle lost a wheel’)
mo == None # returns value “none”

Теперь, если мы попытаемся найти совпадение в строке выше, мы его не найдем.

Если метод search () не может найти указанный шаблон, он вернет значение под названием «Нет». Если мы слепо присвоим то, что возвращает метод search (), объекту соответствия (mo) и вызовем метод group (), вы получите сообщение об ошибке, потому что значение «Нет» не имеет метода с именем группа ().