Сопоставьте начало и конец файла в python с регулярным выражением - PullRequest
7 голосов
/ 02 марта 2010

Мне трудно найти регулярное выражение для начала и конца файла в python. Как мне это сделать?

Ответы [ 3 ]

13 голосов
/ 02 марта 2010

Считать весь файл в строку, тогда \ A соответствует только началу строки, а \ Z соответствует только концу строки. С re.MULTILINE '^' соответствует началу строки и сразу после новой строки, а '$' соответствует концу строки и непосредственно перед новой строкой. См. Документацию Python для re синтаксиса .

import re

data = '''sentence one.
sentence two.
a bad sentence
sentence three.
sentence four.'''

# find lines ending in a period
print re.findall(r'^.*\.$',data,re.MULTILINE)
# match if the first line ends in a period
print re.findall(r'\A^.*\.$',data,re.MULTILINE)
# match if the last line ends in a period.
print re.findall(r'^.*\.$\Z',data,re.MULTILINE)

Выход:

['sentence one.', 'sentence two.', 'sentence three.', 'sentence four.']
['sentence one.']
['sentence four.']
2 голосов
/ 02 марта 2010

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

import re
data=open("file").read()
pat=re.compile("^.*pattern.*$",re.M|re.DOTALL)
print pat.findall(data)

Существуют лучшие способы делать то, что вы хотите, что бы это ни было, без повторного.

1 голос
/ 02 марта 2010

регулярное выражение $ является НЕ вашим другом; см этот ТАК ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...