栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java正则匹配HTML中a标签里的中文字符示例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java正则匹配HTML中a标签里的中文字符示例

本文实例讲述了java正则匹配HTML中a标签里的中文字符。分享给大家供大家参考,具体如下:

今天群里一位朋友问到了一个正则表达式的问题,有如下内容:

特432
453543
a1特123你好123吗?
特2
标签中的文字

现在要匹配出内容包含中文但标签的属性中不包含comment的标签中的汉字。

解决思路如下:

1、首先匹配出不包括comment的标签;

2、在匹配结果中进行二次匹配出中文;

代码如下:

package com.mmq.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MatchChineseCharacters {
  
  public static String matchChineseCharacters(String source) {
    //匹配出包含中文但不包含comment的标签
    String reg = "([^<>]*?[\u4e00-\u9fa5]+[^<>]*?)+(?=)";
    Pattern pattern = Pattern.compile(reg);
    Matcher matcher = pattern.matcher(source);
    StringBuilder character = new StringBuilder();
    while(matcher.find()){
      String result = matcher.group();
      System.out.println(result);
      //对结果进行二次正则,匹配出中文字符
      String reg1 = "[\u4e00-\u9fa5]+";
      Pattern p1 = Pattern.compile(reg1);
      Matcher m1 = p1.matcher(result);
      while(m1.find()){
 character.append(m1.group());
      }
      //System.out.println(character.toString());
    }
    return character.toString();
  }
  public static void main(String[] args) {
    String result = matchChineseCharacters("特432453543a1特123你好123吗?特2标签中的文字");
    System.out.println(result);
  }
}

输出结果如下:

a1特123你好123吗?
标签中的文字
特你好吗标签中的文字

这里做一下解释:

String reg = "([^<>]*?[\u4e00-\u9fa5]+[^<>]*?)+(?=)";

这个匹配内容包含中文但标签的属性中不包含comment的标签的正则中,不能使用向后查找?<=,因为向后查找只能是固定长度的内容,这里标签中属性不确定,所以不能使用;[\u4e00-\u9fa5]+匹配中文字符串;而(?=)使用向前查找?=,在结果中不会包含结束标签。

这个问题就这样得到解决了。如果说要匹配指定标签中的指定内容,那么也是很容易改进的了。若有更好的正则,还请留言相互学习。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

Javascript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号