java - 正则表达式捕获,无论在 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" 而不管位置
解决方案
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="
是一个或多个非空格字符,最后是"
. 双引号之间的字符存储在一个组中。因此,该组的内容就是您希望获得的内容。
推荐阅读
- ios - Admob w/Spritekit
- facebook - Facebook Bot 附件不可用问题
- php - 如果特定列中没有重复项,则在 codeigniter 中插入批处理
- c# - 将子项添加到 EntryDirectory 错误
- angular - 过渡动画在 Angular 5 中不起作用
- forms - 在动态生成的控件上使用事件变量
- ios - 如何在 iOS 中将 base64 字符串发送到服务器?
- c# - asp.net C# Gridview 包含数据但只返回单元格值 = ""
- linux - 如何为我设计的 CPU 制作 Linux 操作系统?
- c++ - 为什么临时生命周期结束时程序没有崩溃?