У меня есть файл с этими данными:
PAS_BEGIN_0009999
T71_MANUFACTURER_4=98
T71_COLOR_ID_7=000
T71_OS_7=08
PAS_END_0009999
PAS_BEGIN_0009996
T72_VAS_SERVICE_IDENTIFIER_6=
T72_ORDER_NB_7=0003
T72_TECHNOLOGY_7=01
PAS_END_0009996
TPV_BEGIN
PAS_20819001=3600000
TPV_END
Как я могу просто изолировать контент между PAS_BEGIN_0009996
и PAS_BEGIN_0009996
Вот ссылка для примера: https://regexr.com/3vmeq
Он что-то находит, но мой код на Python ничего не находит.
if re.match("PAS_BEGIN_0009999([\S\s]*)PAS_END_0009999", line):
data.append(line)
print(line)
Может ли кто-нибудь помочь мне в этом? Спасибо
Вы читаете текстовый файл по строкам, но ваш ожидаемый матч находится на нескольких строках. Вам нужно прочитать весь файл в переменной, а затем запустить регулярное выражение, подобное вашему, или, лучше, шаблон, например a.*?b
с параметром re.DOTALL
.
может соответствовать символам прерывания строки.
Таким образом, вы можете использовать что-то вроде
import re
fpath = 'your_file_path.txt'
data = ''
pattern=r'PAS_BEGIN_0009999(.*?)PAS_END_0009999'
with open(filepath, "r") as f:
contents = f.read()
m = re.search(pattern, contents)
if m:
data = m.group(1) # or '.group() if you need to include PAS_BEGIN_0009999 and PAS_END_0009999
Если вам нужно найти несколько вхождений, замените часть re.search
(все строки после contents
) на
data = re.findall(pattern, contents)
re.match
выполняет поиск только в начале строки. Используйтеre.search
. Кроме того, измените[\S\s]*
на[\S\s]*?