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

本文介绍了如何使用Java正则表达式匹配HTML中a标签内的中文字符,同时排除包含comment属性的标签。通过两次正则匹配,先筛选出不包含comment的标签,再从中提取中文。提供的代码示例展示了实现这一功能的方法。
摘要由CSDN通过智能技术生成

本文实例讲述了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;

/**

* @use 匹配HTML的标签中的中文字符

* @ProjectName stuff

* @Author mumaoqiang

* @FullName com.mmq.regex.MatchChineseCharacters.java

* @JDK 1.6.0

* @Version 1.0

*/

public class MatchChineseCharacters {

/**

* 根据输入的内容,匹配出包含中文但不包含comment的标签中的中文字符

* @param source 要匹配的内容

* @return 标签中的中文字符

*/

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款非常方便的正则表达式工具供大家参考使用:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值