匹配python中字符串中多个标记实例内的所有内容

时间:2014-08-31 10:46:51

标签: python regex string

示例字符串:

str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"

结果应该是一个列表:

res = [John, Mary]

我现在应该学习正则表达式。

2 个答案:

答案 0 :(得分:1)

试试这个:

import re
str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"
ext = re.findall(r'<sec>(\S+?)</sec>', str)

这将返回['John', 'Mary']

\S - 表示匹配任何非空白字符。

+? - 表示一次或多次重复一个角色(非贪婪)。

() - 表示提取这些括号内的所有内容。

答案 1 :(得分:0)

您正在处理(类似于)XML。使用a parser

import xml.etree.ElementTree as ET

str = "<sec>John</sec> said hi to a woman (named <sec>Mary</sec>)"

doc = ET.fromstring("<root>" + str + "</root>")
result = [x.text for x in doc.findall(".//sec")]

# >>> ['John', 'Mary']