黑马程序员技术交流社区

标题: 再次请教正则表达式 问题, [打印本页]

作者: 郑枫    时间: 2012-9-5 10:46
标题: 再次请教正则表达式 问题,
现在问题是这样的, 通过 String mailreg = "[h][t][t][p](.)+[\\.][g][i][f]"
这样能获得 首位是  http  结尾是.gif的UTL

但是问题又来了。这样获取到很多没用的GIF。
通过观察 发现 那些没用的GIF是这样形式的。
http:\\.........  j_0000.gif 这样的,点前面是j_数字 数字 数字 数字  连续四个数字,

现在我的想法是把这种的去掉,
我查API 看到 \D 是非数字, 这样我又定义了一下
String mailreg1 = "[h][t][t][p](.)+[\\D][\\D][\\D][\\D][\\.][g][i][f]";
这样吧,定义成点前面的四位 任意以为都不能为数字

怎样才能定义成四位不能全是数字呢?

还有如何定义   _  呢?
或者非 _  

作者: 佟亚鹏    时间: 2012-9-5 12:47
你可以换个思路,让它经过两次过滤,这样实现起来比较简单,第一个就是把你需要的gif形式的过滤下来,然后在过滤经过第一次过滤筛选下来的url,把你不想要的格式定义出正则表达式,然后把不符合要求的过滤掉,这样经过两次过滤剩下的就是你想要的url了,把这两个正则表达式编译好,过滤的还是很快的。
作者: 佟亚鹏    时间: 2012-9-5 12:49
_可以直接去  非_可以使用^_  ^为取反的意思,推荐你看看这个帖子
http://www.cnblogs.com/dragon/archive/2006/05/08/394078.html
希望采纳啊  分少的可怜啊
作者: AngieFans85    时间: 2012-9-5 13:07
"怎样才能定义成四位不能全是数字呢?"

// 把格式固定为http:\\的形式
String regx = "http:\\\\\\\\.+\\D{4}\\.gif";

// 不固定为http:\\的形式
String regx = "http.+\\D{4}\\.gif";




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2