我的字符串是
"S001P001Q001"
我想将字符串拆分为:
['S001', 'P001', 'Q001']
我尝试了这个步骤:
test_re = re.compile("(P?[^P]+)")
result_str = test_re.findall(str1)
答案 0 :(得分:3)
就像我在评论中所说的那样,您可以使用re.findall
代替re.split
方法。
>>> s = "S001P001Q001"
>>> re.findall(r'[A-Za-z][^A-Za-z]*', s)
['S001', 'P001', 'Q001']
>>> re.findall(r'[A-Za-z]\d*', s)
['S001', 'P001', 'Q001']
[A-Za-z]
- 匹配字母表。
[^A-Za-z]*
- 匹配零个或多个非字母字符。
\d*
- 匹配零个或多个数字字符。
因此上述findall
函数从字母开始匹配,贪婪地匹配所有零个或多个非字母字符,直到识别出字母。一旦找到字母表,它就会停止匹配。现在从第二个字母开始,它匹配所有字符到下一个字母表。同样,它继续下去。