Регулярное выражение: получение нескольких строк python

#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. Это все равно не будет работать корректно для различных угловых случаев. Лучшее решение — вообще не использовать регулярные выражения.