比如有下面一段代码:
<a href="11"><font color="21">aaa</font></a>
<a href="12"><font color="22">bbb</font></a>
<a href="13">ccc</a>
<a href="14"><font color="24">ddd</font></a>
<a href="15"><font color="25">eee</font></a>
<a href="16">fff</a>上面的代码意思是<font color="***">和</font>不一定有,而且color的值也可能不一样
我现在想得到
aaa
bbb
ccc
ddd
eee
fff这个正则表达式该怎么写?谢谢

解决方案 »

  1.   

    用捕获组
    public static void main(String args[]) {
         String str="<a href='13'>ccc </a> ";
            Pattern p=Pattern.compile(">([\\w ]+)<");
            Matcher m=p.matcher(str);
            while(m.find())
             System.out.print(m.group(1));    
        }
    至于你那个aaa bbb ccc我想实际上应该是一个字符串吧 你自己改吧 把">([\\w ]+)<"括号里的表达式按需要改吧 然后m.group(1)就是你要的 应该可以的 而且后面还一个空格 倒
      

  2.   


    /**
     * kimi
     */package test;import java.util.regex.Matcher;
    import java.util.regex.Pattern;/**
     * @author kimi
     * 
     */
    public class TestCsdn {    /*
         * <a href="11"> <font color="21">aaa </font> </a> <a href="12"> <font color="22">bbb </font> </a> <a href="13">ccc
         * </a> <a href="14"> <font color="24">ddd </font> </a> <a href="15"> <font color="25">eee </font> </a> <a
         * href="16">fff </a>
         * 
         */
        /**
         * @param args
         */
        public static void main(String[] args) {
            String s1 = "<a href=\"11\"> <font color=\"21\">aaa </font> </a>\n"
                + "<a href=\"12\"> <font color=\"22\">bbb </font> </a>\n" + "<a href=\"13\">ccc </a>";
            String s = "(<a href=\"\\d{2}\">(<font color=\"\\d{2}\">(.*?)</font>)?|(.*?)</a>[\n\r]?)+";
            Pattern p = Pattern.compile(s);
            Matcher m = p.matcher(s1);
            if (m.matches()) {
                System.out.println("ok");
            }
        }
    }
    初学EL,请多多关照!
      

  3.   

    问一下楼主,你是想用js还是java啊?
      

  4.   

    package test1;
    import java.util.regex.*;
    public class Test6

    public static void main(String[] args)

    String s="<a href=\"11\"> <font color=\"21\">aaa </font> </a> "
    +"<a href=\"12\"> <font color=\"22\">bbb </font> </a> "
    +"<a href=\"13\">ccc </a> "
    +"<a href=\"14\"> <font color=\"23\">ddd </font> </a>" 
    +"<a href=\"15\"> <font color=\"25\">eee </font> </a> "
    +"<a href=\"16\">fff </a> ";
    String regex="<a.*?>(.*?)</a>";
     
    Pattern pt=Pattern.compile(regex);
    Matcher mt=pt.matcher(s);
    while(mt.find())
    {
    System.out.println(mt.group(1).replaceAll("<font.*?>|</font>", "").trim());
    }

      

  5.   


    能不能一个正则表达式搞定不用后边的replaceAll阿
      

  6.   

    import java.util.Pattern;
    import java.util.Matcher;public class Test {
        public static void main(String[] args) {
            String str = "<a href=\"11\"> <font color=\"21\">aaa </font> </a>" +
                         "<a href=\"12\"> <font color=\"22\">bbb </font> </a>" +
                         "<a href=\"13\">ccc </a> " +
                         "<a href=\"14\"> <font color=\"23\">ddd </font> </a>" +
                         "<a href=\"15\"> <font color=\"25\">eee </font> </a> " +
                         "<a href=\"16\">fff </a> ";
            String regex = "<a[^>]*>(?:\\s*<font[^>]*>)?(.*?)(?:</font>\\s*)?</a>";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                System.out.println(matcher.group(1));
            }
        }
    }