想实现的效果
把下面
[江苏省(320000)|PROV|0|][苏州市(320500)|CITY|0|][吴江区(320509)|AREA|0|][双板桥路()|ROAD|1|52号$]附近
转换为:
江苏省苏州市吴江区双板桥路52号附近
下面是正确的golang代码
reg := regexp.MustCompile("\\[([^\\(]+)\\(\\d*\\)\\|\\w*\\|\\d\\|([^\\]\\$]*)\\$?\\]")
fmt.Println(dis.Address)
dis.Address = reg.ReplaceAllString(dis.Address, "$1$2")
fmt.Println(dis.Address)
下面的代码是同样的效果下和regexbuddy的语法,和golang的语法主要区别在:转义符要多一个\
\[([^\(]+)\(\d*\)\|\w*\|\d\|([^\]\$]*)\$?\]
总结如下
- 正常的表达式中\w是能识别中文,但是golang似乎并不可以,需要用[\u4e00-\u9fa5]显示指定
- golang的转义符要用\\
- \w \d 等常用的也要用 \\w \\d 来表示
- regexp.MustCompile(``)这种写法还有待尝试