找回密码
 加入
搜索
查看: 2475|回复: 5

[AU3基础] 请教正则表达式分枝替换如何表达?

  [复制链接]
发表于 2013-3-30 13:21:02 | 显示全部楼层 |阅读模式
本帖最后由 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)
发表于 2013-3-30 14:53:20 | 显示全部楼层
回复 1# CHEARV
分支不会的话可以分步替换,先替换湖南,再替换广东,最后替换-
 楼主| 发表于 2013-3-30 18:54:04 | 显示全部楼层
回复 2# xms77


谢谢,我目前是这样做的,但我想想看看有没有更好的。
发表于 2013-3-30 21:52:01 | 显示全部楼层
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)
发表于 2013-3-30 22:50:08 | 显示全部楼层
这样写是不是易读点?
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)
 楼主| 发表于 2013-3-31 12:39:54 | 显示全部楼层
谢谢各位,但各位都是分步来替换的。我想知道有没有办法用一句代码就可以完成的。 既然可以分枝匹配,难道真不能分板替换吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 01:38 , Processed in 0.135651 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表