博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

正则表达式技巧:尽量描述清楚规则,少用.*?

Posted on 2010-06-04 23:48  随风飘零0  阅读(286)  评论(0)    收藏  举报

数据源:,aaacccbbb, aadg, abcdzyxw, acbyyjia, achengsz, acongcong, aadg, adcamilk, admirably, admrty, adongge, advwang,

对于上面这堆id,要求找出重复的id,实际可能很大,几千几万个,我先用正则“(,.*?,).*?\1”,发现执行得很慢很慢,到最后几乎死机了,然后修改为“(,\s[^,]+?,).+?\1”,发现速度快了好多倍,一会就就出结果了,实际测试是用来4000个id。

再举个例子,这个是例子是实际应用的,就是给邮箱发广告,如果给同一个邮箱发了两封相同的肯定会引起别人的厌恶,这样就需要检查准备发送广告的邮箱是否存在相同的邮箱。

数据源:,mediacrash@sbcglobal.net,fox_lgjckd@kurzepost.de,worldswalker@gmail.com,

用下面的表达式检测即可:

(\b[^@,\s]+@[^@,\s]+\b)[\s\S]+?\1