什么应该是字符串的正则表达式?

时间:2014-01-28 22:19:22

标签: python regex

我正在尝试为字符串编写正则表达式 -

c190_12_1-10
c129
abc_1-90

分开到 -

['c190_12_', '1', '10']
['c', '129']
['abc_', '1', '90']

到目前为止,我已经提出了(\D+)(\d+)-?(\d+)?

但是,它并不适用于所有组合。我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您可以使用:

items = ['c190_12_1-10', 'c129', 'abc_1-90']
reg = re.compile(r'^(.+?)(\d+)(?:-(\d+))?$')

for item in items:
   m = reg.match(item)
   print m.groups()

答案 1 :(得分:0)

不确定你到底做了什么,不想做什么,但这可能对你有用:

(?:(\w+)(\d+)-|([a-z]+))(\d+)$

http://regex101.com/r/uA3eZ4

这里的秘密是在结束时向后工作,在那里似乎总是相同的条件。然后使用条件和非捕获组,最终得到您显示的结果。