Регулярное выражение Python, сопоставление шаблона с несколькими строками ... почему это не работает?

Для freemarker, возможно: Встроенные для дат .

13
задан Rick 20 August 2010 в 20:09
поделиться

2 ответа

Попробуйте re.findall (r "#### (. *?) \ S (. *?) \ S #### ", string, re.DOTALL) (конечно, работает и с re.compile ).

Это регулярное выражение будет возвращать кортежи, содержащие номер раздела и содержимое раздела.

В вашем примере это вернет [('1', 'ttteest'), ('2', '\ n \ nttest')] .

(Кстати: ваш пример не будет работать, для многострочных строк используйте '' ' или "" ")

15
ответ дан 1 December 2019 в 19:01
поделиться

Многострочный не означает . будет соответствовать возврату строки, это означает, что ^ и $ ограничены только строками

re.M re.MULTILINE

Если указано, символ шаблона '^' соответствует в начале строки и в начале> каждой строки (сразу после каждой новой строки); а символ шаблона '$'> соответствует концу строки и концу каждой строки (непосредственно перед каждой> новой строкой). По умолчанию '^' соответствует только началу строки, а '$' только> концу строки и непосредственно перед новой строкой (если есть) в конце строки.

re.S или re.DOTALL составляет . совпадать даже с новыми строками.

Источник

http://docs.python.org/

24
ответ дан 1 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

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