Fw: [問題] 請教正則運算式的問題

作者: mrker (ꬮ....)   2013-01-31 00:09:28
請問版上各位高手
小弟最近在研究正則運算式
遇到一個困難
就是不知道有沒有辦法做出 "不匹配但是紀錄群組" 的結果
例如解析地址
如果判斷式為 (.*)市(.*)區(.*)路
目標字串為 "台北市信義區松智路"
會得到
group(0) = 台北市信義區松智路
group(1) = 台北
group(2) = 信義
group(3) = 松智
但如果輸入 "台北市松智路"
少了"區" 就會沒辦法匹配
如果判斷式改為 (.*)市(.*)區?(.*)路
一樣輸入 "台北市松智路"
會得到
group(0) = 台北市松智路
group(1) = 台北
group(2) = 松智
現在想問的是 有沒有辦法 就算沒有匹配到"區"
但是有用小括號group起來 就記錄為一個群組
例如 想得到的結果如下
group(0) = 台北市松智路
group(1) = 台北
group(2) = null
group(3) = 松智
用Regex Tester怎麼試都試不出來 = =|||
先感謝各位高手解答!
作者: qwertmn (抽筋)   2013-01-31 00:46:00
用直覺點寫 (.*(?=市))?市?(.*(?=區))?區?(.*(?=路))?路?
作者: No (you stay there)   2013-01-31 00:49:00
(.+)市(?:(.+)區)?(.+)路
作者: mrker (ꬮ....)   2013-02-04 01:43:00
謝謝 都可以work 不過台灣地址規則複雜 還在找穩當的做法
作者: DeathWatch (愛情模糊理論)   2013-02-04 22:57:00
建議可以去看郵局的規則

Links booklink

Contact Us: admin [ a t ] ucptt.com