找回密码
 加入
搜索
查看: 3777|回复: 13

[AU3基础] 正则:一个奇怪的问题?

 火.. [复制链接]
发表于 2011-6-21 09:38:14 | 显示全部楼层 |阅读模式
本帖最后由 newuser 于 2011-6-21 09:47 编辑

进行 a.b@163.com  匹配练习时,用如下正则都好使:
\w+[.-_]*\w*@\w+[.]\w+
\w+[-._]*\w*@\w+[.]\w+
都好使,可是使用
\w+[_-.]*\w*@\w+[.]\w+
却不行?难道是这个顺序下   -   变成了连接符,可是  .-_ 就匹配了,那这里的-不也应该按照连接符理解吗?奇怪!

另外,看资料有个匹配邮箱的正则,看上去很对,但测试怎么通不过呢?
^.+@.+\\..+$
我的理解是:
^.+  至少以一个字母开头
@    匹配@
.+   至少匹配一个字母及以上
\\.   匹配 .   
.+   至少匹配一个字母及以上
$   匹配字符串尾部位置
我用这个正则去匹配诸如  dfas@163.com   ,没有匹配任何项目?问题在哪里?
发表于 2011-6-21 10:06:57 | 显示全部楼层
在字符集[]里面, '-' 也是元字符.
但字符集里的元字符有些特殊,有时候可以不需要转义符.

"-"        字符集中的元字符(特殊位置可不加转义符:紧跟'['的位置、贴在']'前的位置)
发表于 2011-6-21 10:09:56 | 显示全部楼层
\\.匹配的是 "\" + char

应该用
^.+@.+\..+$
发表于 2011-6-21 10:10:13 | 显示全部楼层
奇怪吗?一点儿也不奇怪
 楼主| 发表于 2011-6-21 10:53:02 | 显示全部楼层
回复 2# easefull
我想知道对于我的第一个问题,为什么在字符集里
[.-_] 和[_-.]效果不一样?虽然-也是元字符,但前者也不是紧跟[或]啊?二者都没有用转义字符\啊,但结果确实不同?
发表于 2011-6-21 10:56:42 | 显示全部楼层
.和_的UNICODE码各是多少?
 楼主| 发表于 2011-6-21 10:58:52 | 显示全部楼层
回复 3# easefull
看来资料上也是错的!谢谢.
发表于 2011-6-21 11:14:16 | 显示全部楼层
回复  easefull
我想知道对于我的第一个问题,为什么在字符集里
[.-_] 和[_-.]效果不一样?虽然-也是元字符 ...
newuser 发表于 2011-6-21 10:53


字符集里面的元字符并不是一定要加转义符的.
像"-"在紧跟'['的位置贴在']'前的位置是可以不加转义符的.
 楼主| 发表于 2011-6-21 13:56:47 | 显示全部楼层
字符集里面的元字符并不是一定要加转义符的.
像"-"在紧跟'['的位置和贴在']'前的位置是可以不加转义符 ...
easefull 发表于 2011-6-21 11:14

我了解啊!字符集中的大多数元字符是不需要加转义符的,因为它们在字符集中已经失去了特定的意义相当于普通字符了,不过少数元字符诸如:\ ^ - : [] 在字符集[]中还保留特殊意义,因此,如果要匹配他们,需要使用\,不过元字符-正如你说的,在紧跟[或]不需要使用转义字符,但我想问的问题是使用[_-.]和[.-_]
为什么匹配结果不同,请注意是[_-.]和[.-_],-位于中间,他们的区别是.和_位置不同?
发表于 2011-6-21 14:27:18 | 显示全部楼层
"_"的UNIDOCE=005F
"."的UNIDOCE=002E
"-"的UNIDOCE=002D
[.-_]等同于[\x2e-\x5f]
或等同于[\x{002E}-\x{005F}]这里的-指从0x2E到0x5F的所有字符.即匹配"./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"里的任意字符
而[_-.]这个表达式是错误的,能这么写吗?比如你需要匹配A-Z的任意一个字符,可以使用[A-Z],但如果使用[Z-A]的话,很明显表达式错误,匹配不到任何东西的.
 楼主| 发表于 2011-6-21 17:25:32 | 显示全部楼层
"_"的UNIDOCE=005F
"."的UNIDOCE=002E
"-"的UNIDOCE=002D
[.-_]等同于[\x2e-\x5f]
或等同于[\x{002E}-\ ...
3mile 发表于 2011-6-21 14:27

感觉是顺序的问题,但没想到他还的转成UNICOCE码!
不过总感官上:
005F>002E>002D 啊!
而\w+[_.-]*\w*@\w+[.]\w+可以匹配类似a.b@163.com,这个和[z-a]顺序又无关了?所以还是不明白?
发表于 2011-6-21 18:06:41 | 显示全部楼层
回复 11# newuser
[_.-]是匹配_.-中的任意字符
发表于 2011-6-22 05:50:30 | 显示全部楼层
刚接触正则,看得有点云里雾里的,似乎有点点收获。。
谢谢了
 楼主| 发表于 2011-6-22 07:57:58 | 显示全部楼层
回复  newuser
[_.-]是匹配_.-中的任意字符
3mile 发表于 2011-6-21 18:06

其实我有点专牛角尖了,当时测试时发现[_-.]不能匹配,把他们调换个顺序就能匹配了,当时想这不是字符分类吗!按照资料解释,同一时间匹配的是字符分类中的一个元素,所以应该和顺序无关啊!可是他们的结果确实不一样,要么匹配成功或要么不成功!所以不知道为什么?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 04:28 , Processed in 0.081661 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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