什么是正则表达式,用于在>之间查找字符串和<

时间:2012-01-22 06:44:30

标签: python regex xml-parsing

我有一个HTML文件

 ...<b>Breakfast</b><hr>...

我希望Breakfast介于><之间。

我试过

...for test_string in line:
        if re.match(r'(>.*<$)',test_string):...

这也没有给>Breakfast<

谢谢。

3 个答案:

答案 0 :(得分:4)

一般来说正则表达式无法解析html。您可以使用html解析器:

from BeautifulSoup import BeautifulSoup # pip install BeautifulSoup

html = """...<b>Breakfast</b><hr>..."""

soup = BeautifulSoup(html)
print soup(text=True) # get all text
# -> [u'...', u'Breakfast', u'...']
print [b.text for b in soup('b')] # get all text for <b> tags
# -> [u'Breakfast']

答案 1 :(得分:3)

$表示“输入结束”,不属于此正则表达式。

相反,请执行以下操作:

m = re.search(r'>([^<]*)<', test_string)
if m:
    print m.group(1)

这会搜索>,然后搜索以下不是<的所有字符,然后搜索<><之间的字符标记为一个组,您可以使用m.group(1)

答案 2 :(得分:0)

我想你想要:

r'(>.*?<)'

或者

r'<b(>.*?<)/b>'

非贪婪,在字符串中间匹配。请注意,parsing HTML with regular expressions不是很强大。