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

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
不知道为什么
请高手给看一下
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
\-

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧