请教正则表达式分枝替换如何表达?
本帖最后由 CHEARV 于 2013-3-30 13:43 编辑正则表达式的分枝情况我大概了解,就是用一个|分开。但如果要把匹配到的内容替换呢?如何表达,我试了好多次都不对。
湖南411100 2000-01-01
湖南411000 2002-01-01
广东518000 2003-04-05
广东518050 2009-05-01
广东
我想把上面的湖南和广东分别替换成HN和GD, 想把日期格式中的连接号去掉。
如果要匹配,可以用这个表达式湖南.+ \d{4}-\d{2}-\d{2}|广东.+ \d{4}-\d{2}-\d{2}
但要替换我就不知道要怎么写了,我这样写的不对
StringRegExpReplace($s, ' 湖南(.+)(\d{4})-(\d{2})-(\d{2})|广东(.+)(\d{4})-(\d{2})-(\d{2})' , 'HN$1$2$3$4|GD$1$2$3$4')
请高手指点一下。
补充一下代码
Dim $s
$s = "湖南411100 2000-01-01" &@CRLF & _
"湖南411000 2002-01-01" &@CRLF & _
"广东518000 2003-04-05" &@CRLF & _
"广东518050 2009-05-01" &@CRLF & _
"广东"
;MsgBox(0,"",$s)
$s1 = StringRegExp($s, '湖南.+ \d{4}-\d{2}-\d{2}|广东.+ \d{4}-\d{2}-\d{2}',3)
$s2 = StringRegExpReplace($s, ' 湖南(.+)(\d{4})-(\d{2})-(\d{2})|广东(.+)(\d{4})-(\d{2})-(\d{2})' , 'HN$1$2$3$4|GD$1$2$3$4')
MsgBox(0,"",$s2) 回复 1# CHEARV
分支不会的话可以分步替换,先替换湖南,再替换广东,最后替换- 回复 2# xms77
谢谢,我目前是这样做的,但我想想看看有没有更好的。 Dim $s
$s = "湖南411100 2000-01-01" &@CRLF & _
"湖南411000 2002-01-01" &@CRLF & _
"广东518000 2003-04-05" &@CRLF & _
"广东518050 2009-05-01" &@CRLF & _
"广东"
$s = StringReplace(StringReplace(StringReplace($S,"湖南","HN"),"广东","GD"),"-","")
MsgBox(0,"",$s) 这样写是不是易读点?Dim $s
$s = "湖南411100 2000-01-01" &@CRLF & _
"湖南411000 2002-01-01" &@CRLF & _
"广东518000 2003-04-05" &@CRLF & _
"广东518050 2009-05-01" &@CRLF & _
"广东"
$s = StringRegExpReplace($s, "-", "")
$s = StringRegExpReplace($s, "湖南", "HN")
$s = StringRegExpReplace($s, "广东", "GD")
MsgBox(0, "Info", $s) 谢谢各位,但各位都是分步来替换的。我想知道有没有办法用一句代码就可以完成的。 既然可以分枝匹配,难道真不能分板替换吗?
页:
[1]