当前位置: 代码迷 >> Java相关 >> 正则表达式的问题
  详细解决方案

正则表达式的问题

热度:497   发布时间:2010-07-30 12:20:35.0
正则表达式的问题
第一题:
利用Random类产生5个1~30之间(包括1和20)的随机整数
我当初想的是用数组保存产生的随机数,但感觉效率很低,大家有什么好的办法吗
第二题:
给定下面的HTML代码:
<font face="Arial,Serif" size="+2" color="red">
要求对内容进行拆分,拆分之后的结果是:
face Arial,Serif
size +2
color red
这个用正则应该什么表示
搜索更多相关的解决方案: 正则表达式  

----------------解决方案--------------------------------------------------------
第二铨
正则表达式分两步
第一步
String rex1 = "<\\s*font\\s+([^>]*)\\s*>";//取出font 的属性
第二步
String rex2 = "([a-z]+)\\s*=\\s*\"([^\"]+)\"";//在属性中拆分
程序代码:
import java.util.regex.*;

public class TestRE {
    public static void main(String[] args) {
        String str = "<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
        String rex1 = "<\\s*font\\s+([^>]*)\\s*>";
        String rex2 = "([a-zA-Z]+)\\s*=\\s*\"([^\"]+)\"";
        Pattern pattern1 = Pattern.compile(rex1);
        Pattern pattern2 = Pattern.compile(rex2);
        Matcher m = pattern1.matcher(str);
        while (m.find()) {
            String attribs = m.group(1);
            //System.out.println("find1");
            Matcher m2 = pattern2.matcher(attribs);
            while (m2.find()) {
                //System.out.println("find2");
                System.out.println(m2.group(1)+" "+m2.group(2));
            }
        }

    }

}




[ 本帖最后由 lampeter123 于 2010-7-30 14:58 编辑 ]
----------------解决方案--------------------------------------------------------
回复 2楼 lampeter123
好的,试试……
----------------解决方案--------------------------------------------------------
回复 2楼 lampeter123
String str = "<font face=\"Arial,Serif\" size=\"+2\" color=\"red\">";
        String rex1 = "<\\s*font\\s+([^>])\\s*>";
        String s[] = str.split(rex1);
        System.out.println(s[0]);
为什么这样取不出font的属性来,输出的还是整一句嘛
----------------解决方案--------------------------------------------------------
请看二楼,我已修正了第一个表达式
----------------解决方案--------------------------------------------------------