Python Regex基于条件捕获多行文件



我有一个类似于下面的文本文件

<Start  
1;  
b;  
c;  
d;  
<End  
<Start  
2;  
b;  
c;  
d;  
<End  
<Start  
1;  
b;  
c;  
d;  
<End  

基本上,该文本文件由3组组成,每组以<以<终止我只想用";1〃;只有预期数据如下:

<Start  
1;  
b;  
c;  
d;  
<End  
<Start  
1;  
b;  
c;  
d;  
<End  

我正试图通过Python-Regex找到一种方法来实现这一点,但到目前为止还找不到任何方法。如果我能得到这个社区的帮助,我将不胜感激。提前感谢

使用此正则表达式(<Start[s]*1;[sa-z;]*<End)

它将捕获与()之间的模式匹配的所有字符串

  • 字符串以<Start开头
  • 然后可以有任何*空白[s]
  • 然后应该有字符串1;
  • 然后我们可以有空格s、分号;或小写字母a-z
  • 最终以<End结束

在这里试试

另一种模式是("regex_input.txt"是一个完全包含您的输入的文件(:

import re
# This simply loads your content
content = None
with open("regex_input.txt", "r") as f:
content = "n".join([line.strip() for line in f])
# The re.DOTALL option allows to capture newlines as well
pattern = re.compile("<Start[^<]*?1;.*?<End", re.DOTALL)
print(pattern.findall(content))

输出

['<Startn1;nb;nc;nd;n<End', '<Startn1;nb;nc;nd;n<End']

最新更新