在使用正则表达式跳过模式时匹配行

时间:2017-01-23 14:56:27

标签: python regex

我一直试图在跳过图案时匹配线条。 我正在使用re.DOTALL正则表达式标记。

我需要提取的是

CHINTHAPUDI<br/>
CHINTHAPUDI<br/>

来自选民姓名和父亲的名字。

我目前所掌握的是这个正则表达式:

(?:^Elector\'s Name:.*?<br/>)(.*?)^(?:Husband|Father)

但它匹配第一场比赛下方的其他Elector's Name行。

Link to my regex101

这是我想要匹配的文件:

Elector's Name: ANANTH CHINTAPUDI<br/>
Elector's Name: THIRUPATHI <br/>
Elector's Name: SRINIVASH <br/>
CHINTHAPUDI<br/>
CHINTHAPUDI<br/>
Father's Name: POSHANNA <br/>
Father's Name: SHANKAR <br/>
Father's Name: SHANKAR <br/>
CHINTAPUDDI<br/>
CHINTHAPUDI<br/>
CHINTHAPUDI<br/>

我怎样才能从最后Elector's NameFather's Name进行匹配?

1 个答案:

答案 0 :(得分:0)

这是一个适用于您提供的输入的选项:

(?:Elector\'s Name:.*?<br/>\r?\n)+(.*?)(?:Husband|Father)

如果您使用此选项,则应考虑一个潜在问题:如果文档中较早出现Elector's Name,则将使用第一组。请参阅demo

此外,由于您的正则表达式尝试要求Elector's NameHusbandFather位于该行的开头,因此这是一个维护该要求的版本。如果可能的话,我会避免这种情况,因为它会导致检查速度慢得多(30倍)。

(?:\r?\nElector\'s Name:.*?<br/>)+\r?\n(.*?)\r?\n(?=Husband|Father)