`
faylai
  • 浏览: 77046 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

java 正则表达式获取匹配

阅读更多

比如有下面一段代码:
<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

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());
        }
    } 
} 

 

使用非捕获组

 

package test1;
import java.util.regex.*;
 
public class Test6 ...{
    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));
        }
    }
}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics