关于一个字符串的拆分,使用正则,高手请指教

pd0395 2010-03-20 11:24:50
<font face="Arial,Serif" size="+2" color="red">
拆成
face Arial,Serif
size +2
color red

我是这样拆的
import java.util.regex.*;
public class Test12{
public static void main(String args[]){
String a="<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
String s[]=a.split("<|>|\\\"|=|font");

System.out.println(s[2]+s[3]+"\t"+s[4]);
System.out.println(s[5]+"\t"+s[7]);
System.out.println(s[8]+"\t"+s[10]);
}
}

貌似有点取巧了,请高手给的正规的写法,谢谢
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenzheng38 2010-03-21
  • 打赏
  • 举报
回复
htmlparser一个专门处理HTML文件的处理程序包
zx8813443 2010-03-21
  • 打赏
  • 举报
回复
这样吧,=号两边都可以有空格的
Pattern p = Pattern.compile("<\\s*\\w+(\\s+([\\w]+\\s*)=\\s*\"([^\"]*)\")*?\\s*>");
zx8813443 2010-03-21
  • 打赏
  • 举报
回复
LZ看看这个,是不是符合你的要求

public static void main(String[] s)
{

StringBuilder sb = new StringBuilder("<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">");

Pattern p = Pattern.compile("<\\s*\\w+(\\s+([\\w]+\\s*)=\"([^\"]*)\")*?\\s*>");

Matcher m = p.matcher(sb.toString());

while(m.find())
{
if(m.group(2) == null || m.group(3) == null)
break;
System.out.print(m.group(2)+" ");
System.out.println(m.group(3));
int start = sb.indexOf(m.group(1));
int end = start + m.group(1).length();
sb.delete(start, end);
m = p.matcher(sb.toString());
}
}
xy_2005 2010-03-21
  • 打赏
  • 举报
回复

public static void main(String[] args) {
String str="<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
for(String s :str.split("[\\s<>\\\"&&[^=\\\"]]")){
if(s.contains("=")){
s = s.replaceFirst("=\\\"", " ");
s = s.substring(0, s.length()-1);
System.out.println(s);
}
}
}
pd0395 2010-03-21
  • 打赏
  • 举报
回复
回复 1楼
就是这样的
taigarz 2010-03-20
  • 打赏
  • 举报
回复
http://www.javaeye.com/topic/603996
taigarz 2010-03-20
  • 打赏
  • 举报
回复
找找相关的html解析类库吧
  • 打赏
  • 举报
回复
<font face="Arial,Serif" size="+2" color="red">

待拆的字符串仅仅是这样的?
相关推荐

62,569

社区成员

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