假如我有个字符串:
String str = "<p>ad看来飞机阿道夫就是返京客流实际刻录机刻录机<img alt=''src='test.jpg' /></p>asdf 阿斯蒂芬健康
阿萨德发生sad风口浪尖 <img alt=''src='test2.jpg' />";我想要用正则表达式怎么得到所有的<img ..../>,请问怎么写代码ps:
是java的正则表达式做,要得到所有的<img .../>

解决方案 »

  1.   

    如下:String str = "<p>ad看来飞机阿道夫就是返京客流实际刻录机刻录机<img alt=''\n src='test.jpg' /></p>asdf 阿斯蒂芬健康\n阿萨德发生sad风口浪尖 <img alt=''src='test2.jpg' />";
    Pattern p = Pattern.compile("<img(.|\n)+?src='(.+)'");
    Matcher m = p.matcher(str);
    while (m.find()) {
        System.out.println(m.group(2));
    }
      

  2.   


    Pattern p = Pattern.compile("(?is)<img.*?/>");
      

  3.   

    我试了一下 如果有三个<img alt = '' src= '' /> 就有一个查不到!!
      

  4.   

    检查了下,之前的对空格处理存在漏洞,用这个:
    Pattern p = Pattern.compile("<img(.|\\s)+?src\\s?=\\s?'([^']+)'");
      

  5.   

    几个关键解释:
    ◎ (.|\\s)+?  
    —— (.|\\s) 任意常规字符和空白字符(含空格、换行、Tab);
    —— + 最少1个或多个;
    —— ? 采用Reluctant模式(厌恶模式、最少匹配模式)◎ \\s?
    —— 没有或多个空白字符◎ ([^']+)
    —— () 组group
    —— [^'] 除了单引号以外的任何字符
    —— + 一个或多个