java正則匹配HTML中a標(biāo)簽里的中文字符示例
本文實(shí)例講述了java正則匹配HTML中a標(biāo)簽里的中文字符。分享給大家供大家參考,具體如下:
今天群里一位朋友問(wèn)到了一個(gè)正則表達(dá)式的問(wèn)題,有如下內(nèi)容:
<a href='www.baidu.comds=id32434#comment'rewr>特432</a> 453543 <a guhll,,l>a1特123你好123嗎?</a> <a href=id=32434#comment'ewrer>特2</a> <a>標(biāo)簽中的文字</a>
現(xiàn)在要匹配出內(nèi)容包含中文但標(biāo)簽的屬性中不包含comment的<a>標(biāo)簽中的漢字。
解決思路如下:
1、首先匹配出不包括comment的<a>標(biāo)簽;
2、在匹配結(jié)果中進(jìn)行二次匹配出中文;
代碼如下:
package com.mmq.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @use 匹配HTML的<a>標(biāo)簽中的中文字符
* @ProjectName stuff
* @Author mumaoqiang
* @FullName com.mmq.regex.MatchChineseCharacters.java
* @JDK 1.6.0
* @Version 1.0
*/
public class MatchChineseCharacters {
/**
* 根據(jù)輸入的內(nèi)容,匹配出包含中文但不包含comment的<a>標(biāo)簽中的中文字符
* @param source 要匹配的內(nèi)容
* @return <a>標(biāo)簽中的中文字符
*/
public static String matchChineseCharacters(String source) {
//匹配出包含中文但不包含comment的<a>標(biāo)簽
String reg = "<a((?!comment).)*?>([^<>]*?[\\u4e00-\\u9fa5]+[^<>]*?)+(?=</a>)";
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);
//對(duì)結(jié)果進(jìn)行二次正則,匹配出中文字符
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("<a href='www.baidu.comds=id32434#comment'rewr>特432</a>453543<a guhll,,l>a1特123你好123嗎?</a><a href=id=32434#comment'ewrer>特2</a><a>標(biāo)簽中的文字</a>");
System.out.println(result);
}
}
輸出結(jié)果如下:
<a guhll,,l>a1特123你好123嗎? <a>標(biāo)簽中的文字 特你好嗎標(biāo)簽中的文字
這里做一下解釋?zhuān)?/p>
String reg = "<a((?!comment).)*?>([^<>]*?[\\u4e00-\\u9fa5]+[^<>]*?)+(?=</a>)";
這個(gè)匹配內(nèi)容包含中文但標(biāo)簽的屬性中不包含comment的<a>標(biāo)簽的正則中,不能使用向后查找?<=,因?yàn)橄蚝蟛檎抑荒苁枪潭ㄩL(zhǎng)度的內(nèi)容,這里<a>標(biāo)簽中屬性不確定,所以不能使用;[\\u4e00-\\u9fa5]+匹配中文字符串;而(?=</a>)使用向前查找?=,在結(jié)果中不會(huì)包含結(jié)束標(biāo)簽</a>。
這個(gè)問(wèn)題就這樣得到解決了。如果說(shuō)要匹配指定標(biāo)簽中的指定內(nèi)容,那么也是很容易改進(jìn)的了。若有更好的正則,還請(qǐng)留言相互學(xué)習(xí)。
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線(xiàn)測(cè)試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線(xiàn)生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
mac下idea啟動(dòng)web項(xiàng)目報(bào)錯(cuò)java.net.SocketException:socket closed
本文主要介紹了作者在項(xiàng)目啟動(dòng)時(shí)遇到的一個(gè)問(wèn)題——無(wú)法打開(kāi)調(diào)試端口,經(jīng)過(guò)一系列排查和嘗試,最終發(fā)現(xiàn)是由于權(quán)限問(wèn)題導(dǎo)致的,作者還分享了如何修改文件權(quán)限的方法,并提醒大家不要隨意kill掉占用端口的進(jìn)程2024-12-12
SpringCloud微服務(wù)熔斷器Hystrix使用詳解
這篇文章主要介紹了Spring Cloud Hyxtrix的基本使用,它是Spring Cloud中集成的一個(gè)組件,在整個(gè)生態(tài)中主要為我們提供服務(wù)隔離,服務(wù)熔斷,服務(wù)降級(jí)功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Java并發(fā)工具類(lèi)之CountDownLatch詳解
這篇文章主要介紹了Java并發(fā)工具類(lèi)之CountDownLatch詳解,CountDownLatch可以使一個(gè)獲多個(gè)線(xiàn)程等待其他線(xiàn)程各自執(zhí)行完畢后再執(zhí)行,CountDownLatch可以解決那些一個(gè)或者多個(gè)線(xiàn)程在執(zhí)行之前必須依賴(lài)于某些必要的前提業(yè)務(wù)先執(zhí)行的場(chǎng)景,需要的朋友可以參考下2023-12-12
一文掌握SpringSecurity?BCrypt密碼加密和解密
BCrypt就是一款加密工具,可以比較方便地實(shí)現(xiàn)數(shù)據(jù)的加密工作。也可以簡(jiǎn)單理解為它內(nèi)部自己實(shí)現(xiàn)了隨機(jī)加鹽處理,這篇文章主要介紹了SpringSecurity?BCrypt密碼加密和解密,一文學(xué)會(huì)使用BCryptPasswordEncoder的方法,需要的朋友可以參考下2023-04-04
JavaWeb 實(shí)現(xiàn)驗(yàn)證碼功能(demo)
在 WEB-APP 中一般應(yīng)用于:登錄、注冊(cè)、買(mǎi)某票、秒殺等場(chǎng)景,大家都接觸過(guò)這個(gè)驗(yàn)證碼操作,今天小編通過(guò)實(shí)例代碼給大家講解javaweb實(shí)現(xiàn)驗(yàn)證碼功能,需要的朋友參考下2017-02-02
Java構(gòu)建JDBC應(yīng)用程序的實(shí)例操作
在本篇文章里小編給大家整理了一篇關(guān)于Java構(gòu)建JDBC應(yīng)用程序的實(shí)例操作,有興趣的朋友們可以學(xué)習(xí)參考下。2021-03-03
Spring Security驗(yàn)證流程剖析及自定義驗(yàn)證方法
Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪(fǎng)問(wèn)控制解決方案的安全框架。這篇文章主要介紹了Spring Security驗(yàn)證流程剖析及自定義驗(yàn)證方法,需要的朋友可以參考下2018-03-03
javaweb Servlet開(kāi)發(fā)總結(jié)(一)
Servlet是sun公司提供的一門(mén)用于開(kāi)發(fā)動(dòng)態(tài)web資源的技術(shù)。這篇文章主要介紹了javaweb Servlet開(kāi)發(fā)的第一篇,感興趣的小伙伴們可以參考一下2016-05-05

