,无论在 java 中的位置如何,java,regex"/>

首页 > 解决方案 > 正则表达式捕获,无论在 java 中的位置如何

问题描述

我正在尝试找出以下 img src 标记的正则表达式模式

<img src="attachment.jpg" alt="attachment.jpg" />

我只想要这里的img src 标签,例如“attachment.jpg”,但是是否有这样的模式可以找到 img src,如果它在整个请求的不同位置,例如像这样

<img height="" weight="" src="attachment.jpg" alt="attachment.jpg" />

所以在我返回的模式中,它总是会找到 <img src="attachment.jpg" 然后返回给我 "attachment.jpg" 而不管位置

标签: javaregex

解决方案


String regex = "<img .*src=\"([^\\s]+)\"";
Pattern pttrn = Pattern.compile(regex);
String str = "<img height=\"\" weight=\"\" src=\"attachment.jpg\" alt=\"attachment.jpg\" />";
Matcher mtchr = pttrn.matcher(str);
if (mtchr.find()) {
    System.out.println(mtchr.group(1));
}
String str2 = "<img src=\"attachment.jpg\" alt=\"attachment.jpg\" />";
mtchr = pttrn.matcher(str);
if (mtchr.find()) {
    System.out.println(mtchr.group(1));
}

上面的正则表达式搜索<img后跟一个空格,后跟零个或多个字符(任何字符),然后src="是一个或多个非空格字符,最后是". 双引号之间的字符存储在一个组中。因此,该组的内容就是您希望获得的内容。


推荐阅读