我想用正则表达式写一个从网叶的源文件中提取出来类似下面的字符串:
http://mil.eastday.com/m/20070117/images/00853307.jpg
http://image.mop.com/js/bq/p/2006/0930/15_1_1767_8_52_20060930174611.jpg
http://image2.sina.com.cn/jc/p/2007-02-01/U1335P27T1D429475F3DT20070201075646.jpg我自己试了很多次都不行:
1,我这样写Regex reg = new Regex("http://.+?\\.jpg"),匹配出来的结果含有下面的情况http://imgnews.baidu.com/i?ct=520093696&z=0&tn=baiduimagenewsdetail&word=%CB%D52
7&in=4&cl=3&lm=-1&pn=3&rn=1" target="_blank"><img src="http://imgnews.baidu.com/
it?u=1169369768,2933688088" border="0"></a><br><span style=line-height:24px><FON
T color=#6f6f6f size=1>2006-12-30 10:42   </font></span><br><span style=line-hei
ght:24px><a href="http://imgnews.baidu.com/ir?t=1&u=http://cimg2.163.com/cnews/2
006/7/3/20060703115204befbf.jpg
然后我把改成这样Regex("http://.+?[^(http)].+?\\.jpg")结果还是cpu使用率直接100%,希望高手能够指出其中原因2,我以前的时候用java写的,运行都好着,
Matcher m = Pattern.compile("http://((\\w)+|/|\\.)+jpg").matcher(total);
我把它直接改成这样Regex reg = new Regex("http://((\\w)+|/|\\.)+jpg")和刚才一样cpu使用率100%,不知道什么原因.
3,后来我又改成这样Regex reg = new Regex("http://((\\w)+|/|_|-|\|\\.)+\\.jpg")结果一个都没有匹配上,不知道什么原因.
希望高手能够大概解释一下上面的我为什么错了还有应该怎么样正确的表达?

解决方案 »

  1.   

    Regex reg = new Regex("http://.+?[^""].+?\\.jpg")
    这个看看
      

  2.   

    Regex reg = new Regex("http://[^""]*?\\.jpg")
      

  3.   

    楼上的大哥 感谢你回答我的问题!
    我试了你发的,首先你[^""]编译不能通过,我猜想你可能想表达不包含“的意思改成这样:
    [^\"]结果还是不行, cpu使用%100
      

  4.   

    Regex reg = new Regex(@"http://[^""]*?\\.jpg")
      

  5.   

    测试过@"http://[\w\+\-/\.]*\.jpg[\s\""]*"
      

  6.   

    zhangliu_521(浪客)你的编译通过 可是运行了后结果是错的.
    zswang(伴水清清)(专家门诊清洁工) 你能大概给我讲一下你写的吗? 大概说一下 我没有看明白你写的 但是结果和我预想的一样
      

  7.   

    @"http://[\w\+\-/\.]*\.jpg[\s\""]*"http://  以后字母,+号 -号 \号 中的任意个 "*" 循环0次到n次  [\s\""]*   同样\s 代表空格  "" 代表"  这两个循环 0 到n次..