正则表达式,用于查找具有图像扩展名的HTML的href属性

时间:2015-08-24 15:47:14

标签: java regex

我需要在文档HTML中提取图像中的所有链接。 实际上我可以使用这个RegExp提取href属性值:

private static final String HTML_A_HREF_TAG_PATTERN = 
    "\\s*(?i)href\\s*=\\s*(\"([^\"]*\")|'[^']*'|([^'\">\\s]+))";

我只需要获取图像的链接,所以我必须检查,如果字符串与图像扩展名匹配(jpg,jpeg,png,gif)。

如何修改模式?

1 个答案:

答案 0 :(得分:1)

免责声明 - 使用正则表达式解析html 推荐!

尽管不完美,但这可能有效。该链接位于捕获组2中。

 # "(?si)<[\\w:]+(?=(?:[^>\"']|\"[^\"]*\"|'[^']*')*?(?<=\\s)href\\s*=\\s*(?:(['\"])\\s*((?:(?!\\1).)*?\\.(?:jpg|png|jpeg|gif))\\s*\\1))\\s+(?:\".*?\"|'.*?'|[^>]*?)+>"

 (?si)
 < [\w:]+ 
 (?=
      (?: [^>"'] | " [^"]* " | ' [^']* ' )*?
      (?<= \s )
      href \s* = \s* 
      (?:
           ( ['"] )                      # (1)
           \s* 
           (                             # (2 start)
                (?:
                     (?! \1 )
                     . 
                )*?
                \.
                (?: jpg | png | jpeg | gif )
           )                             # (2 end)
           \s* 
           \1 
      )
 )
 \s+ 
 (?: " .*? " | ' .*? ' | [^>]*? )+
 >