正则表达式获取img的src内容

简介: 正则表达式获取img的src内容

如果我们有如下一段数据,我们想获取img中src的内容。

<p>桥边姑娘,我把你放心上</p><p><img src="https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg" _src="https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg" style="width: 550px; height: 317px;"/></p>

具体实现

这里我们分两步走,先匹配img标签,然后再获取src后面的内容。具体代码如下:

private static final Pattern IMAGE_TAG_PATTERN = Pattern.compile("<(img|IMG)(.*?)>");
private static Pattern IMAGE_SRC_PATTERN = Pattern.compile("(src|SRC)=\"(.*?)\"");
private static Pattern IMAGE__SRC_PATTERN = Pattern.compile("(_src|_SRC)=\"(.*?)\"");

public static void matchImgSrcTag(String srcStr) {

    List<String> targets = new ArrayList<>();

    // 针对src标签
    // 先匹配img标签
    Matcher imageTagMatcher = IMAGE_TAG_PATTERN.matcher(srcStr);
    while (imageTagMatcher.find()) {
        String image = imageTagMatcher.group(2).trim();
        // 获取src后面的内容
        Matcher imageSrcMatcher = IMAGE_SRC_PATTERN.matcher(image);
        String src = null;
        if (imageSrcMatcher.find()) {
            src = imageSrcMatcher.group(2).trim();
        }
        if (src == null || src.isEmpty()) {
            continue;
        }
        System.out.println("src:" + src);
        targets.add(src);
    }

    // 针对_src标签
    while (imageTagMatcher.find()) {
        String image = imageTagMatcher.group(2).trim();
        Matcher imageSrcMatcher = IMAGE__SRC_PATTERN.matcher(image);
        String src = null;
        if (imageSrcMatcher.find()) {
            src = imageSrcMatcher.group(2).trim();
        }
        if (src == null || src.isEmpty()) {
            continue;
        }
        System.out.println("_src_:" + src);
        targets.add(src);
    }
}

测试验证

public static void main(String[] args) {
    String src = "<p>桥边姑娘,我把你放心上</p><p><img src=\"https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg\" _src=\"https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg\" style=\"width: 550px; height: 317px;\"/></p>";
    matchImgSrcTag(src);
}

output:

src:https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg
_src_:https://n.sinaimg.cn/news/transform/20171113/puY7-fynship2141885.jpg
相关文章
|
移动开发 C# .NET
C#正则表达式通过HTML提取网页中的图片src
原文:C#正则表达式通过HTML提取网页中的图片src 目前在做HoverTreeCMS项目中有处理图片的部分,参考了一下网上案例,自己写了一个获取内容中的图片地址的方法。可以先看看效果:http://tool.hovertree.com/a/zz/img/  一般来说一个 HTML 文档有很多标签,比如“”、“”、“”等,想把文档中的 img 标签提取出来并不是一件容易的事。
1699 0
正则表达式取&lt;img src=""&gt;src中包含特定字符的地址
string str = @" "; Regex reg = new Regex(@"(?is)]*?src=(['""\s]?)((?:(?!topics)[^'""\s])*)\1[^>]*?>"); foreach (Match m in reg.
1157 0
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r&#39;string&#39;`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
|
8月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
89 2
|
8月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
8月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
8月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。
|
8月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
90 2
|
8月前
|
Python
Python正则表达式详解:掌握文本匹配的魔法
Python正则表达式详解:掌握文本匹配的魔法
|
8月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
61 0