Почему некоторые функции регулярных выражений возвращают объект соответствия, а некоторые нет?

В обычных функциях регулярных выражений Python re.match, re.search, re.fullmatch и т. д. возвращают объект соответствия, и для печати результата мы должны использовать match.group():

re.search(шаблон, строка): ищет первое вхождение шаблона в строке и возвращает объект соответствия.

match = re.search(r'\d+', 'There are 123 apples')
if match:
    print(match.group())  # Output: '123'

Но результаты для функций регулярных выражений, таких как re.findall, re.split, re.sub и т. д., можно распечатать напрямую:

re.split(шаблон, строка): разбивает строку по вхождениям шаблона и возвращает список.

result = re.split(r'\s+', 'Split this string by spaces')
print(result)  # Output: ['Split', 'this', 'string', 'by', 'spaces']

Спрашивайте у разработчика модуля, а не у SO.

Mark Tolonen 04.09.2024 09:34

Почему все функции должны иметь один и тот же тип возвращаемого значения, если они служат разным целям?

Jeyekomon 04.09.2024 10:54
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Эти группы функций просто имеют разные цели. Такие, как re.match, re.search, re.fullmatch, просто сообщают вам, есть ли совпадение в тексте и где оно находится:

re.search(r'\d+', 'There are 123 apples')

результат: <re.Match объект; диапазон=(10, 13), совпадение='123'>

re.match(r'There', 'There are 123 apples')

результат: <re.Match объект; span=(0, 5), match='Там'>

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

Хотя цель re.split, re.findall и т. д. — предоставить вам список строк. который нужно либо распечатать, либо использовать дальше в скрипте.

re.split(r'\s+', 'Split this string by spaces')

['Разделить', 'это', 'строка', 'по', 'пробелы']

re.findall("o[a-z]", 'Find groups of o+ other letters')

['оу', 'из', 'от']

Надеюсь, это прояснит ситуацию.

Спасибо .. помогает понять .. Будучи учеником, мой вопрос заключался только в том, чтобы понять, есть ли какая-либо техническая причина, по которой некоторые функции возвращают объект соответствия. Но теперь я понимаю, что они были построены именно так. Еще раз спасибо за помощь и понимание

NBS 05.09.2024 15:29

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

Похожие вопросы

Группируйте элементы в фрейме данных и отображайте их в хронологическом порядке
Операции Pandas между типами с плавающей запятой и NaN
Используйте спецификатор формата для преобразования столбца float/int в фрейме данных Polars в строку
Как ВСТАВИТЬ в таблицу с помощью AUTO_INCREMENT?
Дилемма 100 заключенных: кодекс всегда приводит к провалу (все заключенные умирают)
Как устранить ошибку AttributeError: у модуля «Фиона» нет атрибута «Путь»?
Я работаю над тем, чтобы сделать бота Python, который будет нажимать кнопку в списке, который повторяется сам, используя селен
Какие замены регулярных выражений помогают при переписывании SQL-запросов MS Access как простых запросов TSQL? Как их можно зациклить с помощью Excel в качестве входных и выходных данных?
Сообщение об ошибке с использованием нескольких замен строк %s
Должны ли классы аутентификации и классы разрешений в представлениях Django REST Framework определяться с помощью списков или кортежей?