#python #regex #markdown
#python #регулярное выражение #уценка
Вопрос:
Я работаю над интерпретатором markdown на python.
В настоящее время у меня проблемы с реализацией ссылок.
Как я могу искать несколько значений внутри строки с помощью модуля регулярных выражений Python?
Мой код:
links = re.findall("[[^]]([^])", "Hello [World](example.com) Hello [Mars](example.org)")
Мой желаемый результат должен быть
[["World", "example.com"], ["Mars", "example.org]]
Комментарии:
1. Если это то, что вы действительно хотите запустить в рабочей среде, существует хорошо зарекомендовавшая себя библиотека Python markdown , доступная в pip as
Markdown
.
Ответ №1:
Попробуйте это:
links = re.findall("[(. ?)]((. ?))", "Hello [World](example.com) Hello [Mars](example.org)")
links = map(list,links)
print(list(links))
Вывод:
[['World', 'example.com'], ['Mars', 'example.org']]
Комментарии:
1.
w. ?
это относительно странный вариант для использования для захваченной части — вероятно, было бы лучше просто использовать. ?
безw
.w
Префикс произвольно потребовал бы, чтобы захваченный текст начинался с буквы, цифры или подчеркивания … и[!!foo](www.example.com)
является совершенно допустимой ссылкой Markdown, которая ей не соответствует.2. Это все равно не будет работать корректно для различных угловых случаев. Лучшее решение — вообще не использовать регулярные выражения.