Рубрики
Без рубрики

Python Regex – Как сопоставить начало строки (^) и конца строки ($)

Эта статья – это все о начале строки ^ и конца строки $ регулярных выражений в библиотеке Python’s Re. Эти два регеляции являются фундаментальными для всех регулярных выражений – даже за пределами мира Python. Так что инвестируйте 5 минут сейчас и освоить их один раз и навсегда! Вы также можете послушать видео в виде прокрутки … Python Regex – Как сопоставить начало строки (^) и конца строки ($) Подробнее »

Автор оригинала: Chris.

Эта статья все о Начало строки ^ и конец строки $ регулярные выражения в Python’s Re библиотека Отказ

Эти два Regexes являются фундаментальными для всех регулярных выражений – даже за пределами мира Python. Так что инвестируйте 5 минут сейчас и освоить их один раз и навсегда!

Вы также можете прослушать видео, когда вы прокрутите пост. Это сделает обучение намного проще:

Связанная статья: Python Regex SuperPower – Ultimate Guide

Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.

Python Re Start-String (^) Regex.

Вы можете использовать оператор CARET ^, чтобы соответствовать началу строки. Например, это полезно, если вы хотите убедиться, что в начале строки появится шаблон. Вот пример:

>>> import re
>>> re.findall('^PYTHON', 'PYTHON is fun.')
['PYTHON']

Метод Findall (Pattern, String) находит все вхождения рисунка в строке. Карета в начале картины «^ Python» гарантирует, что вы соответствуете слову Python только в начале строки. В предыдущем примере это не имеет никакого значения. Но в следующем примере это делает:

>>> re.findall('^PYTHON', 'PYTHON! PYTHON is fun')
['PYTHON']

Хотя есть два вхождения подстроки «Python», есть только одна соответствующая подстрока – в начале строки.

Но что, если вы хотите сопоставить не только в начале строки, но в начале каждой строки в многострочной строке? Другими словами:

Python Re Start-of Line (^) Regex.

Оператор CARET по умолчанию относится только к началу строки. Поэтому, если у вас есть многострочная строка, например, при чтении текстового файла – он все равно будет соответствовать только один раз: в начале строки.

Однако вы можете подобрать в начале каждой строки. Например, вы можете найти все строки, которые начинаются с «Python» в данной строке.

Вы можете указать, что оператор Caret соответствует началу каждой строки через RE. Многослойный флаг. Вот пример, показывающий оба использования – без и с настройкой RE. Многоловый флаг:

>>> import re
>>> text = '''
Python is great.
Python is the fastest growing
major programming language in
the world.
Pythonistas thrive.'''
>>> re.findall('^Python', text)
[]
>>> re.findall('^Python', text, re.MULTILINE)
['Python', 'Python', 'Python']
>>> 

Первый выход – это пустой список, потому что строка «Python» не отображается в начале строки.

Второй выход – это список трех соответствующих подстрок, потому что строка «Python» появляется три раза в начале строки.

Python re.sub ()

RE.SUB (Pattern, repl, string ,,) Метод возвращает новую строку, в которой все вхождения рисунка в старой строке заменены на REPL. Читайте больше в Учебник блогов Finxter Отказ

Вы можете использовать оператор CARET для замены, где какой-то шаблон появляется в начале строки:

>>> import re
>>> re.sub('^Python', 'Code', 'Python is \nPython')
'Code is \nPython'

Только начало строки соответствует шаблону Regex, поэтому у вас есть только одна замена.

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

>>> re.sub('^Python', 'Code', 'Python is \nPython', flags=re.MULTILINE)
'Code is \nCode'

Теперь вы заменяете оба внешности строки «Python».

Python re.match (), re.search (), re.findall () и Re.fulllmatch ()

Давайте быстро переправимся самым важным методам Regex в Python:

  • Re.findall (шаблон, строка) Метод возвращает список строковых совпадений. Читайте больше в Наше руководство в блоге Отказ
  • Re.Search (шаблон, строка , ) Метод возвращает объект совпадения первого матча. Читайте больше в Наше руководство в блоге Отказ
  • Re.match (шаблон, строка , ) Метод Возвращает объект совпадения, если установки Regeex в начале строки. Читайте больше в Наше руководство в блоге Отказ
  • Re.fullmatch (шаблон, строка , ) Метод возвращает объект совпадения, если Regeex соответствует всей строке. Читайте больше в Наше руководство в блоге Отказ

Вы можете увидеть, что все четыре метода поиска шаблона в данной строке. Вы можете использовать оператор CARET ^ в каждом шаблоне, чтобы соответствовать началу строки. Вот один пример на один метод:

>>> import re
>>> text = 'Python is Python'
>>> re.findall('^Python', text)
['Python']
>>> re.search('^Python', text)

>>> re.match('^Python', text)

>>> re.fullmatch('^Python', text)
>>> 

Таким образом, вы можете использовать оператор Caret, чтобы соответствовать в начале строки. Однако следует отметить, что не имеет большого смысла использовать его для методов Match () и Fullmatch (), поскольку они по определению, начнут, пытаясь сопоставить первый символ строки.

Вы также можете использовать RE. Многональный флаг, чтобы соответствовать началу каждой строки (а не только начало строки):

>>> text = '''Python is
Python'''
>>> re.findall('^Python', text, flags=re.MULTILINE)
['Python', 'Python']
>>> re.search('^Python', text, flags=re.MULTILINE)

>>> re.match('^Python', text, flags=re.MULTILINE)

>>> re.fullmatch('^Python', text, flags=re.MULTILINE)
>>> 

Опять же, это сомнительно, имеет ли это смысл для методов Re.match () и Re.fullmatch (), поскольку они ищут только матч в начале строки.

Python Re конец строки ($) Regex

Точно так же вы можете использовать оператор долларовой знак $, чтобы соответствовать концу строки. Вот пример:

>>> import re
>>> re.findall('fun$', 'PYTHON is fun')
['fun']

Метод findall () находит все вхождения рисунка в строке – хотя приводной долларовой знак $ гарантирует, что регулярные выражения соответствуют только в конце строки.

Это может значительно изменить значение вашего регулярного выражения, как вы можете увидеть в следующем примере:

>>> re.findall('fun$', 'fun fun fun')
['fun']

Хотя, есть три вхождения подстроки «Веселье», есть только одна подходящая подстрока – в конце строки.

Но что, если вы хотите подобрать не только в конце строки, но в конце каждой строки в многострочной строке?

Python Re конец строки ($)

Оператор долларовой подписи по умолчанию относится только к концу строки. Таким образом, если у вас есть многострочная строка, например, при чтении текстового файла – все равно будет только один раз: в конце строки.

Однако вы можете подобрать в конце каждой строки. Например, вы можете найти все строки, которые заканчиваются «.py».

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

>>> import re
>>> text = '''
Coding is fun
Python is fun
Games are fun
Agreed?'''
>>> re.findall('fun$', text)
[]
>>> re.findall('fun$', text, flags=re.MULTILINE)
['fun', 'fun', 'fun']
>>> 

Первый выход – это пустой список, потому что строка «Веселье» не отображается в конце строки.

Второй выход – это список трех подходящих подстроек, потому что строка «Веселье» появляется три раза в конце строки.

Python re.sub ()

RE.SUB (Pattern, repl, string ,,) Метод возвращает новую строку, в которой все вхождения рисунка в старой строке заменены на REPL. Читайте больше в Учебник блогов Finxter Отказ

Вы можете использовать оператор Dollar-Sign для замены, где какой-то шаблон появляется в конце строки:

>>> import re
>>> re.sub('Python$', 'Code', 'Is Python\nPython')
'Is Python\nCode'

Только конец строки соответствует шаблону Regex, поэтому есть только одна замена.

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

>>> re.sub('Python$', 'Code', 'Is Python\nPython', flags=re.MULTILINE)
'Is Code\nCode'

Теперь вы заменяете оба внешности строки «Python».

Python re.match (), re.search (), re.findall () и Re.fulllmatch ()

Все четыре метода – Re.findall (), Re.Search (), Re.match () и Re.fulllmatch () – поиск шаблона в данной строке. Вы можете использовать оператор долларовой знак $ в каждом шаблоне, чтобы соответствовать концу строки. Вот один пример на один метод:

>>> import re
>>> text = 'Python is Python'
>>> re.findall('Python$', text)
['Python']
>>> re.search('Python$', text)

>>> re.match('Python$', text)
>>> re.fullmatch('Python$', text)
>>>

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

Вы также можете использовать RE. Многолитный флаг, чтобы соответствовать концу каждой строки (а не только конец всей строки):

>> text = '''Is Python
Python'''
>>> re.findall('Python$', text, flags=re.MULTILINE)
['Python', 'Python']
>>> re.search('Python$', text, flags=re.MULTILINE)

>>> re.match('Python$', text, flags=re.MULTILINE)
>>> re.fullmatch('Python$', text, flags=re.MULTILINE)
>>>

Поскольку шаблон не соответствует префиксе строки, как Re.match (), так и Re.fullmatch () возвращает пустые результаты.

Как сопоставить Caret (^) или символы доллара ($) в вашем Regex?

Вы знаете, что символы CARET и DOLLAR имеют особое значение в регулярном модуле Python Module: они соответствуют началу или конце каждой строки/линии. Но что, если вы ищете сами символы CARET (^) или доллар ($)? Как вы можете сопоставить их в строке?

Ответ прост: избегайте символов CARET или DOLLAR в вашем регулярном выражении, используя обратную косание. В частности, используйте «\ ^» вместо «^ ‘и’ \ $ ‘вместо $’. Вот пример:

>>> import re
>>> text = 'The product ^^^ costs $3 today.'
>>> re.findall('\^', text)
['^', '^', '^']
>>> re.findall('\$', text)
['$']

Сбежав на специальные символы ^ и $, вы говорите двигатель Regex, чтобы игнорировать свое особое значение.

Куда пойти отсюда?

Вы узнали все, что вам нужно знать о операторе CARET ^ и оператора долларового знака $ в этом руководстве REGEX.

Резюме : Оператор CARET ^ матчи в начале строки. Оператор долларовой подписи $ соответствует в конце строки. Если вы хотите подобрать в начале или в конце каждой строки в многострочной строке, вы можете установить RE. Многолитный флаг во всех соответствующих методах Re.

Хотите заработать деньги, пока вы изучаете Python? Средние программисты Python зарабатывают более 50 долларов в час. Вы можете стать средним, не так ли?

Присоединяйтесь к свободному вебинару, которое показывает, как стать процветающим владельцем бизнеса в Интернете!

[Вебинар] Вы являетесь личным разработчиком Freelance Six

Присоединяйтесь к нам. Это весело! 🙂

Курс Python Regex

Инженеры Google являются регулярными мастерами. Система поисковой системы Google – это массивная Текстово-обработка двигателя Это извлекает значение из триллионов веб-страниц.

Инженеры Facebook являются регулярными мастерами экспрессии. Социальные сети, такие как Facebook, WhatsApp, и Instagram Подключите людей через Текстовые сообщения Отказ

Инженеры Amazon являются регулярными мастерами экспрессии. Ecommerce Giants корабля продуктов на основе Описания текстовых продуктов Отказ Регулярные выражения правит игре, когда текстовая обработка соответствует информатике.

Если вы хотите стать регулярным мастером выражения, проверьте Самый полный курс Python Regex на планете:

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

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Оригинал: “https://blog.finxter.com/python-regex-start-of-line-and-end-of-line/”