子串列表

时间:2010-10-15 18:06:52

标签: python regex string list tags

我有大字符串,它可以有几千行。我想在列表中获取所有子字符串:[tag] here can be everything [/tag]

我该怎么做?我的正则表达式不起作用(或者我做错了什么)。

2 个答案:

答案 0 :(得分:0)

函数find_all_tags返回tag中所有标记text的列表:

import re
def find_all_tags(text, tag):
    return re.findall(r"(?s)\[" + tag + r"\].*?\[/" + tag + r"\]", text)

>>> text="""this is [b]bold text[/b] and some[b]
that spans a line[/b] some [i]italics[/i] and some
[b][i]bold italics[/i][/b]"""
>>> find_all_tags(text, "b")
['[b]bold text[/b]', '[b]\nthat spans a line[/b]', '[b][i]bold italics[/i][/b]']

告诉我你是否需要不同的东西(例如发电机而不是子串列表)

答案 1 :(得分:0)

您可以使用字符串拆分

for item in my_big_string.split("]"):
    if "[" in item:
         print item.split("[")[-1]

例如

>>> text="""this is [b]bold text[/b] and some[b]
... that spans a line[/b] some [i]italics[/i] and some
... [b][i]bold italics[/i][/b]"""

>>> for item in text.split("]"):
...    if "[" in item:
...        print item.split("[")[-1],
...
b /b b /b i /i b i /i /b
>>>