带正则表达式的Python条件
我有一个包含这些数据的文件:带正则表达式的Python条件,python,regex,Python,Regex,我有一个包含这些数据的文件: 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_
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\u BEGIN\u 0009996
和PAS\u BEGIN\u 0009996
以下是示例的链接:
它找到了一些东西,但我的python代码没有找到任何东西
if re.match("PAS_BEGIN_0009999([\S\s]*)PAS_END_0009999", line):
data.append(line)
print(line)
有人能帮我吗?谢谢您正在逐行阅读文本文件,但您的预期匹配项位于多行。您需要将整个文件读入一个变量,然后使用
re.DOTALL
选项运行类似于您的正则表达式,或者更好地运行类似于a.*b
的模式,以便
可以匹配换行符
所以,你可以用
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
如果需要查找多个匹配项,请将重新搜索
部分(内容之后的所有行)替换为
请参见
重新匹配
仅在字符串开头搜索。使用重新搜索
。另外,将[\S\S]*
更改为[\S\S]*?
我认为我的问题不仅仅是搜索或匹配。通过更改为搜索,它不会更改结果。是的,一个常见的问题是:您正在逐行阅读。使用带有open(filepath,“r”)的作为f:contents=f.read()
。在内容中搜索。如果重新搜索(“PAS\u BEGIN\u 0009999[\S\S]*PAS\u END\u 0009999”,contents):data.append(contents)
但它添加了我的所有文件,看起来它不理解我的regexNo,m=re.Search(…)
,然后如果m:
,那么data.append(m.group())
。或者使用data=re.findall(regex,contents)
谢谢,通过我的帖子,你解决了我的部分问题;)
data = re.findall(pattern, contents)