Я пишу подходящую функцию, и мне интересно, могу ли я вернуть только первое совпадение. Вот мой код (который соответствует всем экземплярам URL для данной линии, а не только первый) ... это, прежде чем я попытался выбрать один матч:, возвращающий один экземпляр содержимого объекта регулярного выражения
def file_match(line, url):
allmatches = re.search(r'<a href="(?P<url>.*?)"', line)
if allmatches and allmatches.groupdict()['url'] == url:
return allmatches.groupdict()['url']
else:
return None
Кто-нибудь есть опыт работы с эта конкретная проблема? Мне было рекомендовано использовать метод .sub через объект regex, но я действительно не могу сказать, что я буду использовать для аргументов этого метода. Я пробовал несколько вещей, но все они дают ошибки.
Вот пример одной из таких (неудачных) попыток:
def file_match(line, url):
allmatches = re.search(r'<a href="(?P<url>.*?)"', line)
if allmatches and allmatches.groupdict()['url'] == url:
return re.sub(r'<a href="(?P<url>.*?)"', allmatches, 1)
else:
return None
Есть проблема, что я использую метод .search()?
Любые советы будут оценены.
Спасибо, JML
Это соответствует * все * экземпляры шаблона, и я хотел бы, чтобы он соответствует только * один * - я обновил свой вопрос включить попытку. – jml
Просьба уточнить, что вы подразумеваете под «Вот мой код (который работает):«. Вы говорите, что это не работает? Что ты говоришь, точно? –
Как вы заметите выше, я обновил свой вопрос. Что сейчас непонятно? Первый бит кода выполняет, но в результате получается много совпадений на строку (если их больше одного). Второй - попытка выделить первый матч, который я не знаю, как это сделать. – jml