java 정규 일치 HTML의 a 태그의 중국어 문자 예

본고는 자바 정규가 HTML의 a 라벨에 있는 중국어 문자와 일치하는 것을 실례로 설명한다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다.
오늘 채팅방에서 한 친구가 정규 표현식에 대한 질문을 했는데 다음과 같은 내용이 있다.

<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> </a>

현재 내용이 중국어를 포함하지만 탭의 속성에comment를 포함하지 않는 탭의 한자와 일치합니다.해결 방법은 다음과 같습니다.1. 우선comment가 포함되지 않은라벨을 일치시킵니다.2. 일치 결과에서 중국어를 두 번 일치시킵니다.코드는 다음과 같습니다. package com.mmq.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @use 는 HTML의 <a> 태그에 있는 중국어 문자와 일치합니다. * @ProjectName stuff * @Author mumaoqiang * @FullName com.mmq.regex.MatchChineseCharacters.java * @JDK 1.6.0 * @Version 1.0 */ public class MatchChineseCharacters { /** *입력한 내용에 따라 중국어를 포함하지만 comment를 포함하지 않는 <a> 라벨의 중국어 문자와 일치 * @param source 일치하는 내용 * @return <a> 태그의 중국어 문자 */ public static String matchChineseCharacters(String source) { // 중국어를 포함하지만comment를 포함하지 않는 <a> 태그와 일치 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); // 결과에 대한 2차 정규, 중국어 문자 일치 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) { Stringresult=matchChineseCharacters("<ahref='www.baidu.comds=id32434#comment'rewr>특432</a>453543<aguhll,l>a1특123 안녕하십니까?</a><ahref=id=32434#comment'ewrer>특2</a><a>라벨에 있는 문자</a>); System.out.println(result); } } 출력 결과는 다음과 같습니다. <aguhll,, l>a1특123 안녕하십니까? <a> 태그의 텍스트 특별히 안녕하십니까? 여기에 설명을 드리겠습니다. String reg = "<a((?!comment).)*?>([^<>]*?[\\u4e00-\\u9fa5]+[^<>]*?)+(?=</a>)"; 이 일치하는 내용은 중국어를 포함하지만 탭의 속성에comment를 포함하지 않는탭의 정규에서는 뒤로 찾을 수 없습니까? <=,뒤로 찾기 때문에 고정된 길이의 내용만 찾을 수 있습니다. 여기라벨의 속성이 확실하지 않기 때문에 사용할 수 없습니다.[\\u4e00-\u9fa5] + 중국어 문자열 일치;(?=) 앞으로 찾기?=,결과에 종료 태그 가 포함되지 않습니다.
이 문제는 이렇게 해결되었다.지정한 탭의 지정한 내용과 일치해야 한다면 개선하기 쉽다.더 좋은 정칙이 있다면, 메시지를 남겨 서로 공부하세요.
PS: 여기에 매우 편리한 정규 표현식 도구 2가지를 더 제공하여 참고하여 사용할 수 있습니다.
JavaScript 정규 표현식 온라인 테스트 도구:
http://tools.jb51.net/regex/javascript
정규 표현식 온라인 생성 도구:
http://tools.jb51.net/regex/create_reg
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기