我试图用python中的正则表达式从纯文本中提取一些表的标题
普通测试是从一些PDF文件导出的,这些文件有很多\n
。我试图在模式\n \n\n
第一次出现之前停止匹配,但是regex总是返回更多的字符
下面是一个例子
字符串是:
contents = '\n\n\n\n\n\n\n\nClient: ABC area: Location Mc\nHole: 33-44 \n \n\n \n\nKJK TechCen Rep # 5243 \n \n\n \n\n95 \n\nTable 3.1: Joined Liq L1 (P = 40 \n@ 12), Test With 2 % \n\noF \n \n\n PressRel V \n% \n\nLiq/To \n% \n\nLiq/Sat \nBu \n\nDenCom'
我使用的正则表达式是:
re.findall(r'Table *\d.+:* *[a-zA-Z0-9 :&–=\n%@,()°-]+ [^ \n \n\n ]', contents)
我希望结果字符串从'Table XXX'
开始,在第一个' \n \n\n '
之前结束,如下所示:
'Table 3.1: Joined Liq L1 (P = 40 \n@ 12), Test With 2 % \n\noF '
但我得到的实际线索是:
'Table 3.1: Joined Liq L1 (P = 40 \n@ 12), Test With 2 % \n\noF \n \n\n PressRel V'
那么我如何修改regex来摆脱恼人的'\n \n\n PressRel V'
与使用字符类不同,您可以使用正向的lookahead
(?=
来断言应该紧跟其后的是右边Regex demo
或者你可以在一个组中捕获你的值并匹配下面的换行符
Regex demo using a group
您需要一个非贪婪的
+?
而不是+
,因为出现在结束序列中的所有字符都在中间的括号中示例中的
[^ \n \n\n ]
部分等于[^ \n]
,“不是换行符或空格的字符”相关问题 更多 >
编程相关推荐