找回密码
 加入
搜索
查看: 4028|回复: 3

[效率算法] 正则表达式 有效类[:class:]无法匹配----[已解决]

[复制链接]
发表于 2010-2-28 11:02:19 | 显示全部楼层 |阅读模式
本帖最后由 superflq 于 2010-3-1 08:33 编辑

刚开始研究正则表达式,有很多不理解,望大大们多多指点
[:class:]
在字符的给定类中匹配字符. 有效类是:
alpha (任何字母字符),     alnum (任何字母数字字符),      lower (任何小写字母),
upper (任何大写字母),     digit (任何十进制数字 0-9),     xdigit (任何十六进制数字, 0-9, A-F, a-f),
space (任何空白字符),     blank (只有一个空格或制表符),     print (任何可打印字符),
graph (除空格外的任何可打印字符),     cntrl (任何控制字符 [ascii 127 或 <32])
punct (任何标点字符).     因此 [0-9] 相当于 [[:digit:]].
[^:class:]在类中除第一个字符外,不匹配任何字符


根据有效类的说明[:xdigit:]应该是可以匹配 任何十六进制的字符,但是根据程序来看[^:xdigit:]才是可以匹配十六进制表达式
下面是代码,和结果截图
 
$text_in = "C1CfgGh"
$text_out1 = StringRegExpReplace($text_in, "([:xdigit:]{2})([:xdigit:]{2})", "$1+$2+")
$text_out2 = StringRegExpReplace($text_in, "([^:xdigit:]{2})([^:xdigit:]{2})", "$1+$2+")
$text_out3 = StringRegExpReplace($text_in, "([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})", "$1+$2+")
MsgBox(0, "正则替换", "([:xdigit:]{2})([:xdigit:]{2})表达式结果为:"&$text_out1 _
& @CRLF& @CRLF & "([^:xdigit:]{2})([^:xdigit:]{2})表达式结果为:"&$text_out2 _
& @CRLF& @CRLF &"([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})表达式结果为:"&$text_out3)
   
$text_in2 = "1234Gh"
$text_out1 = StringRegExpReplace($text_in2, "([:digit:]{2})([:digit:]{2})", "$1+$2+")
$text_out2 = StringRegExpReplace($text_in2, "([^:digit:]{2})([^:digit:]{2})", "$1+$2+")
$text_out3 = StringRegExpReplace($text_in2, "([0-9]{2})([0-9]{2})", "$1+$2+")
MsgBox(0, "正则替换", "([:digit:]{2})([:digit:]{2})表达式结果为:"&$text_out1 _
& @CRLF& @CRLF & "([^:digit:]{2})([^:digit:]{2})表达式结果为:"&$text_out2 _
& @CRLF& @CRLF &"([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})表达式结果为:"&$text_out3)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-2-28 13:24:43 | 显示全部楼层
确实是AU3 正则的问题还是,我的表达式有问题,请高手指教
发表于 2010-2-28 22:47:38 | 显示全部楼层
注意表达式写法,[:xdigit:] 应该是 [[:xdigit:]]
$text_in = "C1CfgGh"
$text_out1 = StringRegExpReplace($text_in, "([[:xdigit:]]{2})([[:xdigit:]]{2})", "$1+$2+")
$text_out2 = StringRegExpReplace($text_in, "([^:xdigit:]{2})([^:xdigit:]{2})", "$1+$2+")
$text_out3 = StringRegExpReplace($text_in, "([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})", "$1+$2+")
MsgBox(0, "正则替换", "([[:xdigit:]]{2})([[:xdigit:]]{2})表达式结果为:" & $text_out1 _
                 & @CRLF & @CRLF & "([^:xdigit:]{2})([^:xdigit:]{2})表达式结果为:" & $text_out2 _
                 & @CRLF & @CRLF & "([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})表达式结果为:" & $text_out3)

$text_in2 = "1234Gh"
$text_out1 = StringRegExpReplace($text_in2, "([[:digit:]]{2})([[:digit:]]{2})", "$1+$2+")
$text_out2 = StringRegExpReplace($text_in2, "([^:digit:]{2})([^:digit:]{2})", "$1+$2+")
$text_out3 = StringRegExpReplace($text_in2, "([0-9]{2})([0-9]{2})", "$1+$2+")
MsgBox(0, "正则替换", "([[:digit:]]{2})([[:digit:]]{2})表达式结果为:" & $text_out1 _
                 & @CRLF & @CRLF & "([^:digit:]{2})([^:digit:]{2})表达式结果为:" & $text_out2 _
                 & @CRLF & @CRLF & "([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})表达式结果为:" & $text_out3)

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20 学习了

查看全部评分

 楼主| 发表于 2010-3-1 08:32:45 | 显示全部楼层
谢谢楼上,学习了~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-11 05:38 , Processed in 0.078562 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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