最后一个匹配正则表达式

2024-03-28 19:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用regex匹配最后出现的模式。

我有这样的文本结构:

Pellentesque habitant morbi tristique senectus et netus et
lesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae
ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam
egestas <br>semper<br>tizi ouzou<br>Tizi Ouzou<br>                        

我想匹配两个<br>之间的最后一个文本,在我的例子中<br>Tizi Ouzou<br>,理想情况下是Tizi Ouzou字符串

注意,在最后一个<br>之后有一些空格

我试过这个:

<br>.*<br>\s*$

但它选择从第一个<br>到最后一个的所有内容。

注意:我在python上,使用pythex来测试我的regex


Tags: 文本br模式结构regexetametsit
3条回答

看看相关的问题:you shouldn't parse HTML with regex。改用regex解析器。对于Python,我听说Beautiful Soup是一条路。

无论如何,如果您想使用regex,您需要确保.*不能经过另一个<br>。为此,在使用每个字符之前,我们可以使用lookahead来确保它不会启动另一个<br>

<br>(?:(?!<br>).)*<br>\s*$

使用内置str函数的非regex方法:

text = """
Pellentesque habitant morbi tristique senectus et netus et
lesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae
ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam
egestas <br>semper<br>tizi ouzou<br>Tizi Ouzou<br>       """

res = text.rsplit('<br>', 2)[-2]
#Tizi Ouzou

对我来说最清楚的方法是:

>>> re.findall('<br>(.*?)<br>', text)[-1]
'Tizi Ouzou'

相关问题 更多 >