正则匹配字符串里的所有img标签并找到src和alt的值

liuzuowei007 2011-12-23 04:12:14
用正则怎么写?
获取字符串里的所有的img标签 img标签可能是大写的IMG也可能是小写的img
并输出相应img标签的src和alt

哪位大大会写 给写一个 正则不是太熟 谢谢 100分孝敬
...全文
551 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzuowei007 2011-12-26
  • 打赏
  • 举报
回复
感谢楼上两位 问题已解决
huntor 2011-12-24
  • 打赏
  • 举报
回复
既然是一段 html,使用 jsoup处理更简单直观。(http://jsoup.org)

// import org.jsoup.

Document doc = Jsoup.parseBodyFragment(htmltext); // or Jsoup.parse(...);
Elements images = doc.select("img");
for(Element image : images){
System.out.printf("%s:%s%n", image.attr("src"), image.attr("alt"));
}
walkman_22 2011-12-24
  • 打赏
  • 举报
回复
弄出来了。应该能符合你的要求。

package com.walkman.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 获取字符串里的所有的img标签 img标签可能是大写的IMG也可能是小写的img,并输出相应img标签的src和alt
* 作者:Tank
* 日期:2011-12-24
* 文件名:GetImagSrc.java
*/

public class GetImagSrc {

public static void main(String[] args) {
String s = "<img src='12345' alt='demo_alt'>small_tank</img>" +
"<IMG src='大写' alt='upper_letter'>BIG_TANK</IMG>" +
"<img src='test_again' alt='中文也测试_alt'>坦克</img>";
new GetImagSrc().getImgSrc(s);
}

public void getImgSrc(String s) {
// 防止字符串参数出错
int length = s.length();
if (length <= 0) {
System.out.println("字符串长度为零或者字符串为空");
return;
} else {
// 首先匹配img标签内的内容
String img_regex = "<(?i)img(.*?)>(.*?)</(?i)img>";
Pattern p = Pattern.compile(img_regex);
Matcher m = p.matcher(s);

String src_alt;
String img_name;

while(m.find()){

src_alt=m.group(1);
img_name=m.group(2);
if(null==src_alt && null==img_name){
continue;
}

System.out.println("SRC的内容是:" + src_alt);
System.out.println("IMAGE名称是: " + img_name);

// 匹配src中的内容
String src_reg = "src=\'(.*?)\'";
Pattern src_p = Pattern.compile(src_reg);
Matcher src_m = src_p.matcher(src_alt);
while(src_m.find()){
System.out.println("src是:" + src_m.group(1));
}

// 匹配alt中的内容
String alt_reg = "alt=\'(.*?)\'";
Pattern alt_p = Pattern.compile(alt_reg);
Matcher alt_m = alt_p.matcher(src_alt);
while(alt_m.find()){
System.out.println("alt是:" + alt_m.group(1));
}

System.out.println("\n" + "*******************华丽的分隔线*************************" + "\n");
}
}
}

}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧