-1

这是关于文本模式的多行正则表达式模式的问题的后续,但我需要它作为 python 脚本的一部分工作。

这个正则表达式模式:

<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:<\/strong>\r?\n((?:(?!<p><strong>)^[^\r\n]+\r?\n)+)

用于在数百页中查找 Obrador 的所有文本,如下例所示:

<p><strong>ROGELIO JIMÉNEZ PONS:</strong> Quisiera</p>
<p>Text here...</p>
<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:</strong>Some words here.</p>
<p>Text here...</p>
<p>Text here...</p>
<p><strong>PREGUNTA:</strong>Some question here.</p>
<p>Text here...</p>
<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:</strong>Some words here.</p>
<p>Text here...</p>
<p>Text here...</p>
<p>Text here...</p>
<p><strong>INTERLOCUTOR:</strong>

你可以在这里看到测试

但是当我将它放入以下 ​​python 脚本时,它返回一个空列表:

regex_match = re.compile(r'<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:<\/strong>\r?\n((?:(?!<p><strong>)^[^\r\n]+\r?\n)+)', re.MULTILINE)
text_obrador = regex_match.findall(str(all_text))
print(text_obrador)

只是为了测试它,我尝试了以下方法,它只返回了第一个 p 标签内容:

regex_match = re.compile(r'<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:<\/strong>\r?.+', re.MULTILINE)
4

1 回答 1

1

修复了@TimBiegeleisen 指出的缺少的结束 p 标签,并将其添加到正则表达式。现在当我运行时:

regex_match = re.compile(r'<p><strong>PRESIDENTE ANDRÉS MANUEL LÓPEZ OBRADOR:<\/strong>.+\r?\n((?:(?!<p><strong>)^[^\r\n]+\r?\n)+)', re.MULTILINE)
text_obrador = regex_match.findall(str(all_text))
print(text_obrador)

在实际文本中,它有效。

于 2019-11-17T06:29:16.430 回答