我正在尝试按特定字母(在这种情况下为“ r”,“ g”和“ b”)分割字符串,以便稍后将其附加到列表中。这里要注意的是,我也希望将字母也复制到列表中。
string = '1b24g55r44r'
我想要什么:
[[1b], [24g], [55r], [44r]]
答案 0 :(得分:7)
您可以使用findall:
import re
print([match for match in re.findall('[^rgb]+?[rgb]', '1b24g55r44r')])
输出
['1b', '24g', '55r', '44r']
正则表达式匹配:
[^rgb]+?
一次或多次都不是rgb的一切[rgb]
之一。如果您需要将结果作为单例列表,则可以这样做:
print([[match] for match in re.findall('[^rgb]+?[rgb]', '1b24g55r44r')])
输出
[['1b'], ['24g'], ['55r'], ['44r']]
此外,如果字符串仅由数字和rgb
组成,您可以这样做:
import re
print([[match] for match in re.findall('\d+?[rgb]', '1b24g55r44r')])
上述正则表达式的唯一变化是\d+?
,这意味着匹配一位或多位数字。
输出
[['1b'], ['24g'], ['55r'], ['44r']]