【发布时间】:2019-11-04 18:24:03
【问题描述】:
使用正则表达式,我如何拆分字符串并在返回的结果中保留它的分隔符?我正在尝试将包含数字和字符串的字符串拆分为一组字母,后跟任何数值,包括“。”但是它似乎无法正常工作。
下面是我的测试字符串,我使用的是 python 2.7,它没有产生预期的 id。
s = 'M160.394,83.962L121.5,52L86.31,73.378L58,104.917L89.75,C136.667L158.542,136.667L185,110.208L160.394,83.962Z'
parts = filter(None, re.split('([MLHVCSQTAZ][^MLHVCSQTAZ]+)', s, re.IGNORECASE))
print len(parts), parts
>>> 3 ['M160.394,83.962', 'L121.5,52', 'L86.31,73.378L58,104.917L89.75,C136.667L158.542,136.667L185,110.208L160.394,83.962Z']
我希望它能给我这个
>>> 10 ['M160.394,83.962', 'L121.5,52', 'L86.31,73.378', 'L58,104.917', 'L89.75,', 'C136.667', 'L158.542,136.667', 'L185,110.208', 'L160.394,83.962', 'Z']
它应该输出一个字符串列表,其中每个字符串都以一个字母开头,在原始正则表达式MLHVCSQTAZ中找到
【问题讨论】:
-
您可以使用
findall或拆分(?<!^)(?=[MLHVCSQTAZ][^MLHVCSQTAZ]+)