[問題] 請教正則運算式的問題
請問版上各位高手
小弟最近在研究正則運算式
遇到一個困難
就是不知道有沒有辦法做出 "不匹配但是紀錄群組" 的結果
例如解析地址
如果判斷式為 (.*)市(.*)區(.*)路
目標字串為 "台北市信義區松智路"
會得到
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怎麼試都試不出來 = =|||
先感謝各位高手解答!
------------------------------------------------------------
自己再補充一下
如果正則運算式為 "(.*市)?(.*區)?(.*路)?"
可以達成目的
得到的結果如下
group(0) = 台北市松智路
group(1) = 台北市
group(2) = null
group(3) = 松智路
但是要求再多一點點的時候
不要那個[市]和[路]
只要[台北]和[松智]
我就無解了...
當然parse完再用程式去拆字串也是可以
不過現在不是寫作業或是工作需求...
只是好奇有沒有辦法做到一個Pattern直接搞定
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.169.217.239
推
01/31 00:05, , 1F
01/31 00:05, 1F
※ mrker:轉錄至看板 RegExp 01/31 00:09
→
01/31 00:11, , 2F
01/31 00:11, 2F
※ 編輯: mrker 來自: 1.169.217.239 (01/31 00:18)
→
01/31 00:26, , 3F
01/31 00:26, 3F
→
01/31 00:35, , 4F
01/31 00:35, 4F
→
01/31 00:41, , 5F
01/31 00:41, 5F
→
01/31 00:44, , 6F
01/31 00:44, 6F
→
01/31 00:47, , 7F
01/31 00:47, 7F
→
01/31 00:49, , 8F
01/31 00:49, 8F
→
01/31 01:06, , 9F
01/31 01:06, 9F
→
01/31 01:08, , 10F
01/31 01:08, 10F
→
01/31 01:09, , 11F
01/31 01:09, 11F