python正则表达式:如果有多个子串,如何查找字符串?

时间:2016-10-20 18:26:13

标签: python

我想使用正则表达式为以下字符串找到<b></b>之间的字母。

s = "start<b>A</b><b>B</b><b>C</b><b>D</b>End"

所需的结果是A B C D

我试过这些代码......

for i in range(4):
    r = re.search(r'.<b>.</b>.' ,"", s)
    print r

我也尝试了很多其他方法。但他们都不行。

请不要给我减去,我知道这是一个非常初学者的问题。谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

这是一个匹配

的示例正则表达式
>>> import re
>>> p = re.compile(r'<b>(.+?)</b>')
>>> p.findall("start<b>A</b><b>B</b><b>C</b><b>D</b>End")
['A', 'B', 'C', 'D']

答案 1 :(得分:1)

使用re.findall查找包含<b>,中间字符和</b>的所有正则表达式:

import re
s = "start<b>A</b><b>B</b><b>C</b><b>D</b>End"

for match in re.findall(r'<b>(.*?)</b>', s):
    print match,

正则表达式中的括号用于创建,告诉findall您对<b></b>之间的内容感兴趣。

正则表达式的.*?部分表示匹配零个或多个字符,更喜欢满足表达式的最小字符串。

答案 2 :(得分:0)

使用re.findall函数。

>>> m = re.findall(r'<b>(.+?)</b>', s)
>>> m
['A', 'B', 'C', 'D']

>>> ' '.join(m)
'A B C D'

答案 3 :(得分:0)

Since this is XML you are parsing (at least it looks like), why don't use an XML parser, like the xml.etree.ElementTree from the Python standard library:

In [1]: import xml.etree.ElementTree as ET

In [2]: s = "start<b>A</b><b>B</b><b>C</b><b>D</b>End"

In [3]: root = ET.fromstring("<root>%s</root>" % s)

In [4]: [b.text for b in root.findall("b")]
Out[4]: ['A', 'B', 'C', 'D']