我有大字符串,它可以有几千行。我想在列表中获取所有子字符串:[tag] here can be everything [/tag]
。
我该怎么做?我的正则表达式不起作用(或者我做错了什么)。
答案 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
>>>