我想寫一個正則表達式的字符串 -什麼應該是字符串的正則表達式?
c190_12_1-10
c129
abc_1-90
分開來 -
['c190_12_', '1', '10']
['c', '129']
['abc_', '1', '90']
到目前爲止,我已經與(\D+)(\d+)-?(\d+)?
想出但是,這不適用於所有組合。我在這裏錯過了什麼?
我想寫一個正則表達式的字符串 -什麼應該是字符串的正則表達式?
c190_12_1-10
c129
abc_1-90
分開來 -
['c190_12_', '1', '10']
['c', '129']
['abc_', '1', '90']
到目前爲止,我已經與(\D+)(\d+)-?(\d+)?
想出但是,這不適用於所有組合。我在這裏錯過了什麼?
您可以使用此:
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()
甜,謝謝! :) – Mayur
不知道究竟你做,不想匹配,但是這可能會爲你工作:
(?:(\w+)(\d+)-|([a-z]+))(\d+)$
祕密這裏正在向後形成最終,它總是似乎是相同的條件。然後使用條件和非捕獲組,最終得到您顯示的結果。
在c129的情況下,它僅組129而不是[c,129] – Mayur
哦,你是對的 - 錯過了一個捕獲組。固定。 – brandonscript
哪一些不是麼工作? – brandonscript
你能解釋你的分裂規則嗎? –
@CasimiretHippolyte如果它有範圍 - 例如c190_12_1-10 - 我想將它分割爲前綴 - >開始 - >結束。 否則,在c129的情況下 - 將其分割爲前綴 - >開始 – Mayur