将特定模式的字符串拆分为三个部分

sky*_*ork 4 python python-2.7

我得到一个这种模式的字符串:

[blah blah blah] [more blah] some text
Run Code Online (Sandbox Code Playgroud)

我想将字符串分割成三个部分:blah blah blah,more blahsome text.

一种粗略的方法是使用mystr.split('] '),然后[从前两个元素中删除前导.是否有更好的性能(需要非常快速地为成千上万的字符串执行此操作).

voi*_*hos 5

如果您知道文本将采用该形式,则可以使用正则表达式来提取文本.为了提高效率,您可以预编译正则表达式,然后在匹配时重复使用它.

prog = re.compile('\[([^\]]*)\]\s*\[([^\]]*)\]\s*(.*)')

for mystr in string_list:
    result = prog.match(mystr)
    groups = result.groups()
Run Code Online (Sandbox Code Playgroud)

如果你想要一个关于正则表达式本身的解释,你可以使用这个工具.