這是我的正則表達式有三個捕捉組:第一個捕獲組匹配不同
(.*)([0-9])([A-X]).*
但是我得到不同組別的比賽對於這兩個字符串:
的String1:
ERICB7LTMC_01
1: [0,5] ERICB
2: [5,6] 7
3: [6,7] L
String2:
OMXDIV7_6TS
1: [0,8] OMXDIV7_
2: [8,9] 6
3: [9,10] T
我不確定爲什麼在string2中的group1匹配不是OMXDIV。如果有人能夠解釋這種匹配行爲,我會非常感激。
的regexplanet鏈接,這個測試:http://fiddle.re/vqayb6
謝謝!
如果你需要得到最短的匹配到第一個捕獲組,你需要一個懶惰匹配' '並將'_'添加到'AX'範圍:'(。*?)([0-9])([A-X _])。*' –
什麼是確切的要求? –
你的正則表達式是一種點星湯:它將所有東西(。*)進行匹配,然後試圖滿足你的其他要求:一個數字和一個來自A-X的字符和其他所有東西(或者什麼都不)。對於第二個字符串,第一個表達式匹配所有內容,然後在返回時查找* first *數字(這是'6'),然後查找一個字符(這是'T') - 賓果,總體匹配成功了,沒有進一步的問題。像@WiktorStribiżew所說的那樣(使用一個懶惰的量詞)或者更具體。 – Jan