请教一个正则表达式的问题,高分求教

df8327 2009-02-11 01:36:34
一个匹配邮件地址的正则表达式,为什么使用YART测试就可以工作,但是使用CATLRegExp无法正常使用?
正则表达式如下:
[\w-]+([\+\w-]+)*@([\w-]+\.)+([a-zA-Z]){2,3}
代码如下
CAtlRegExp<> reUrl;
REParseError status = reUrl.Parse( L"[\\w-]+([\\+\\w-]+)*@([\\w-]+\\.)+([a-zA-Z]){2,3}");
if (REPARSE_ERROR_OK != status)
return 0;

CAtlREMatchContext<> mcUrl;
if (FALSE == reUrl.Match(L"df8327@sina.com.cn",&mcUrl))
return 0;

这段代码始终返回0
不知道为什么
请高手给看一下
...全文
101 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
df8327 2009-02-11
thx兄弟
给你结分
回复
hhyttppd 2009-02-11
他将{}用作分组了,第二个应该是一样的,可能是CAltRegExp对这个支持不好。
回复
df8327 2009-02-11
多谢了,
hhyttppd
尤其感谢你的帮助,我想再问你下,
你的解释1 ,为什么{2,3}是不合法的,是因为CAltRegExp不支持么?
你的解释2,什么叫区陪一个字符,\w和[a-zA-Z0-9—_]难道不一样么?他们分别匹配什么,您能给举个例子么

再次表示感谢
回复
hhyttppd 2009-02-11
^[a-zA-Z0-9]+[a-zA-Z0-9\\+\\-]*@[a-zA-Z0-9_%\\.\\-]+\\.[a-zA-Z][a-zA-Z][a-zA-Z]*$

CAtlRegExp
1 重用了{},这个{2,3}是不合法的, [a-zA-Z][a-zA-Z][a-zA-Z]* 代替[a-zA-Z]{2,3}
2 [\\W\\-] 只能区配一个字符,用[a-zA-Z0-9]代替
3 - 需要 escape
回复
hhyttppd 2009-02-11
REParseError status = reUrl.Parse( L"[a-zA-Z0-9._%\\-]+@[a-zA-Z0-9_%\\.\\-]+\\.[a-zA-Z][a-zA-Z][a-zA-Z]*");
回复
ydlchina 2009-02-11
这是由于编译器的问题

[\\w-]+([\\+\\w-]+)*@([\\w-]+\\.)+([a-zA-Z]){2,3}

你调一下
回复
waizqfor 2009-02-11
帮顶!~
回复
deerwin1986 2009-02-11
学习 帮顶~
回复
taodm 2009-02-11
\-
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2009-02-11 01:36
社区公告
暂无公告