Java中正則表達式()+誤區記錄

經常看見正則表達式"()+",括號什麼什麼括號加,但是一直存在誤解,寫這個來做記錄

誤區

例如"(scdn)+"

官方解釋: 一個或者更多個

官方匹配模板集:{csdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdncsdn(別數,我都不知道幾個)…或者csdn}

我的誤區模板集:{csdn,csdnscsdn,csdncsdncsdn,csdncsdncsdncsdn,csdncsdncsdncsdncsdn,csdncsdncsdncsdncsdncsdn,csdncsdncsdncsdncsdncsdncsdn,…}

兩個模板去匹配

“csdnbanabanacsdncsdncsdn”

官方結果: csdn和csdncsdncsdn
我臆想中的結果 csdn和csdncsdn,csdncsdncsdn

上面的匹配貪婪型,也是平時看見的最多的情況,(csdn)+的意思是隻匹配兩種情況:一種是隻有一個csdn,另一種是儘可能的匹配多個連續的csdn,而不應該把連續的csdn,拆開來匹配;匹配正確後他們對應的下標是0-3和12-23


用同樣的正則表達式匹配

csdnbanabanacsdncsdncsdnbanabanacsdncsdn

匹配結果是:csdn、csdncsdncsdn、csdncsdn

而且他們對應的下標是0-3、12-23、32-39
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章