我想使用正则表达式为以下字符串找到<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
我也尝试了很多其他方法。但他们都不行。
请不要给我减去,我知道这是一个非常初学者的问题。谢谢你的帮助。
答案 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']