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

2024-09-30 08:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

c190_12_1-10
c129
abc_1-90

分开到-

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

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

但是,它并不适用于所有的组合。我错过了什么?你知道吗


Tags: 字符串abcc190c129
2条回答

不确定您到底做了什么,不想匹配什么,但这可能适合您:

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

http://regex101.com/r/uA3eZ4

这里的秘密是从最后一刻开始,一直向后工作,似乎总是一样的情况。然后使用条件和non-capture组,最终得到显示的结果。你知道吗

您可以使用:

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()

相关问题 更多 >

    热门问题