Python-根据后面一个字符串的最后出现在两个字符串之间找到一个子字符串

问题描述 投票:-1回答:1

我正在尝试找到介于字符串之间的子字符串。第一个字符串为<br>,最后一个字符串为<br><br>。我寻找的第一个字符串是重复的,而后面的字符串可以用作锚点。

这里是一个例子:

<div class="linkTabBl" style="float:left;padding-top:6px;width:240px">
    Anglo American plc
    <br>
    20 Carlton                 House Terrace
    <br>
    SW1Y 5AN London
    <br>
    United Kingdom
    <br><br>
    Phone : +44 (0)20 7968 8888
    <br>
    Fax : +44 (0)20 7968 8500
    <br>
    Internet : 
    <a class="pageprofil_link_blue" href="http://www.angloamerican.com" target="_blank">
        http://www.angloamerican.com
    </a>
    <br>
</div>

我正在尝试获得“英国”。我很想通过字符串操作来获取此字符串,但是如果有人可以通过Beautifulsoup(最好使用css_selector)来获取它,那么它也会被插入。

祝一切顺利。

Web page

regex python-3.x web-scraping beautifulsoup css-selectors
1个回答
0
投票
import re

html = """<div class="linkTabBl" style="float:left;padding-top:6px;width:240px">
    Anglo American plc
    <br>
    20 Carlton                 House Terrace
    <br>
    SW1Y 5AN London
    <br>
    United Kingdom
    <br><br>
    Phone : +44 (0)20 7968 8888
    <br>
    Fax : +44 (0)20 7968 8500
    <br>
    Internet : 
    <a class="pageprofil_link_blue" href="http://www.angloamerican.com" target="_blank">
        http://www.angloamerican.com
    </a>
    <br>
</div>"""

res = re.findall(r'<br>\n    ([a-zA-Z\s]+)?\n    <br><br>', html)

print(res)

注: “ \ n”是换行符,从到要查找的再次有4个空格。因此,如果您有类似这样的内容:

...
<br>United Kingdom<br><br>
...

您应该替换

res = re.findall(r'<br>\n ([a-zA-Z\s]+)?\n <br><br>', html)

通过

res = re.findall(r'<br>([a-zA-Z\s]+)?<br><br>', html)

这里有很好的正则表达式课程https://regexone.com/

© www.soinside.com 2019 - 2024. All rights reserved.