正则表达式:如何匹配任何字母直到一个数字和一个破折号

时间:2018-11-02 01:00:12

标签: python regex

我正在尝试匹配遵循某些规则的字符串序列:

  • rlg3-22,rlas1-4
  • pz
  • xx-0
  • r1-6

例如,在第一行中,我想将字符串匹配到“-”字符,以便执行以下将字符串扩展为(rlg3,rlg4,...,rlg22)的功能。

在第二行中,我将其保留不变。

在第三行中,我也将其保留不变,因为首先没有数字。

谢谢!

1 个答案:

答案 0 :(得分:0)

d = 'rlg3-22'

import re
ops = re.findall(r"\d+",d)         # r"\d+" searches for digits of variables length
prefix = re.findall(r"\D+", d)[0]  # r"\D+" complement set of "\d+"

构建列表并将前缀添加到整数的字符串强制转换

 [prefix + str(i) for i in list(range(int(ops[0]), int(ops[1]),1))]

['rgl3',
 'rgl4',
 'rgl5',
 'rgl6',
 'rgl7',
 'rgl8',
 'rgl9',
 'rgl10',
 'rgl11',
 'rgl12',
 'rgl13',
 'rgl14',
 'rgl15',
 'rgl16',
 'rgl17',
 'rgl18',
 'rgl19',
 'rgl20',
 'rgl21']