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

Я начинаю изучать Regex в Python. Покопавшись некоторое время на этом сайте, я обнаружил, что при анализе «паттернов» есть двухслойные (движок Python и Regex по отдельности). Например, если шаблон = "\b", то он будет пониматься как "Backspace" перед "Соответствует, если указанные символы находятся в начале или конце слова".

А как насчет части str? Например в re.search(pattern, str)? Часть "str" тоже проходит через два слоя? Или он проходит только через движок Python?

Пример кода:

match = re.search("\\b","\\b") #return True

Вот как я это понимаю, пожалуйста, проверьте, прав ли я:

  • сначала о pattern"\\b", после движка Python он становится "\b", затем переходит к движку регулярных выражений, он становится «Соответствует, если указанные символы находятся в начале или конце слова».
  • во-вторых, о str"\\b", после движка Python он становится "\b" и все, это просто "\b" (косая черта и символ «b»). Я прав?

Слоев нет, есть простой текст и представление текста в коде (т.н. строковые литералы). Шаблоны регулярных выражений — шаблоны простого текста, и их просто нужно правильно представить в коде. Здесь нет проблемы с регулярным выражением, просто снова Запутался в обратных косых чертах в регулярных выражениях.

Wiktor Stribiżew 17.03.2022 19:12

@ Виктор Стрибижев Спасибо. Могу я спросить, правильно ли я понимаю строку match = re.search("\\b","\\b")? Первый \\b - это «Соответствует пустой строке, но только в начале или конце слова», как объяснение в документе регулярного выражения, второй \\b - это просто «\b», верно?

Quang Hoàng Minh 17.03.2022 19:20

Я уже предоставил ссылки, объясняющие это. Кто-то снова открыл обман. У вас есть две границы слов в строке \b, почему вы не ожидаете совпадения в строке '\\b'?

Wiktor Stribiżew 17.03.2022 19:24

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

pppery 02.04.2022 20:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Выясните, что часть str — это просто буквальное значение str. Я тестирую его простыми 2 строками кода.

print(re.search("abcd","....")) #None
print(re.search("....","abcd")) #Match

Как видите, "...." в части шаблона обрабатывается регулярным выражением, а "...." в части str — нет.

Другие вопросы по теме