基于重复模式拆分字符串

时间:2017-09-15 12:59:48

标签: python regex string split

我有以下刺痛:

a='text1fig [1]text2fig [15]text3fig [234]text4fig [2234]text5' 

我想把它分成:

texts=['text1','text2','text3','text4','text5']

我试过了:

import re    
texts=re.split('fig \\[[0-3000]\\]',texts) .  

但它不起作用。
谢谢

2 个答案:

答案 0 :(得分:3)

数字范围不是那样的。只需使用\d代替。此外,您需要一个反斜杠,因为双反斜杠被视为字面反斜杠(您希望它转而逃避[ / ]元字符。)

text = re.split(r'fig\s*\[\d+\]', a)

print(text)
['text1', 'text2', 'text3', 'text4', 'text5']

正则表达式详细信息

fig   
\s*   # 0 or more whitespace chars 
\[    # literal opening brace
\d+   # 1 or more digits
\]    # literal closing brace

答案 1 :(得分:0)

您想使用“re.findall”而不是“re.split”

texts = re.findall('text\d', a)

['text1', 'text2', 'text3', 'text4', 'text5']