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