找正式表达式大神指点(求帮帮忙 Orz )


需求:把<xx>内容<xx>按组分割

public static void main(String[] args) {
    String htmlStr = "<Button ALIGN=LEFT ICON=\"NORMAL\" action=\"bypass -h Quest ArenaManager CPrecovery\">CP Recovery: 1,000 Adena</Button>";
    String regEx_html = "<.*?>";
    //定义HTML标签的正则表达式
    Pattern p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(htmlStr);
    while (m.find()){
        System.out.println(m.group(0));
    }
}

输出内容:

<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ArenaManager CPrecovery">
</Button>

成功分了两个组,但是文字外的 "CP Recovery: 1,000 Adena"不知道怎么可以抓出来。
如果单单抓这个,我会 regEx_html = ">.*?<";

输出:>CP Recovery: 1,000 Adena<

但是我需要的是:

<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ArenaManager CPrecovery"> 

CP Recovery: 1,000 Adena

</Button>

这样分开!~求!~

评论区

年轻人

2021-03-30 22:54


看看是否满足你的需求,() 表示不同的分组,group0 表示全匹配结果,group1表示第一个括号匹配出来的内容,gruop2、group3 同理


public static void main(String[] args) {
String htmlStr = "<Button ALIGN=LEFT ICON=\"NORMAL\" action=\"bypass -h Quest ArenaManager CPrecovery\">CP Recovery: 1,000 Adena</Button>";
String regEx_html = "(<.*?>)(.*?)(<.*?>)";
//定义HTML标签的正则表达式
Pattern p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(htmlStr);
while (m.find()){
System.out.println(m.group(0));
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
}

输出结果如下:
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ArenaManager CPrecovery">CP Recovery: 1,000 Adena</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest ArenaManager CPrecovery">
CP Recovery: 1,000 Adena
</Button>




年轻人

2021-03-30 23:00

实在是折腾不下去这个格式了,看这个吧:
https://jfinal.com/share/2394