這裏是我的字符串:正則表達式來多次匹配越好,但限制範圍內
"ab1 ab-1 f-12 g-12 ffff-123 456"
我想挑出來的東西有:
- 最多2個字母
- 可選連字符
最多2個號碼
有效:AB1,AB1,F-12,G-12
- 無效:FFFF-123,456
因此,我創建正則表達式:
[\w{1,2}]-?\d{1,2}
但它返回的東西太多了:
>>> re.findall('[\w{1,2}]-?\d{1,2}', "ab1 ab-1 f-12 g-12 ffff-123 456")
['b1', 'b-1', 'f-12', 'g-12', 'f-12', '456']
的問題是:
[\w{1,2}]
需要從-?
隔離.....我覺得他們被粘在一起[\w{1,2}]
是例如獲得儘可能小的比賽b-1
從ab-1
,當它應該得到最大可能的比賽最多2個字符,ab-1
任何想法?
你想邊緣的情況下,即令牌匹配,如「AB- 「或」-45「,甚至」 - 「?目前發佈的問題留作解釋。如果這樣做,這將打破依賴Barmar和其他人提出的詞邊界錨(\ b)的正則表達式。 – dpodbori 2013-04-22 19:43:56