2017-01-16 1 views
0

내 질문은 다음과 같습니다.정규 표현 그룹화

다른 태그로 묶인 매우 긴 문자열이 있습니다. 중국어, 영어 단어 및 숫자를 포함한 그 값.

패턴을 지정하여 구분하고 싶습니다. 다음은 예입니다 은 (xxxx는, 숫자 또는 표기법, 중국어 영어지만 "<"를 포함하지 않거나 어디 패턴 XXXXXX를 찾으려면 ">"이 두 기호가 태그 식별을위한로)

을 그러나, 나는이 패턴에 이상한 것을 발견했다. 패턴이 처음 두 태그()하지만

String a = "<f\"number\">4 <f\"number\"><f$n0>14 <h85><f$n0>4 <f$n0>2 <f$n0>2 7 -<f\"Times-Roman\">7<f\"number\">"; 
Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}*\\p{sc=Han}*[a-z]*[A-Z]*[0-9]*^<>]*<f\"number\">"); 
Matcher m = p.matcher(a); 

while(m.find()){ 
    System.out.println(m.group()); 
} 

이 출력은

+0

, 당신이 고려해야 XML 파서를 사용하여. 정규 표현식은 이것을 다루는 것만 큼 뜨겁지가 않다. –

+0

죄송합니다. 일부 정보를 놓치지 마십시오. – DickDickSean

+0

예상 결과는 이어야합니다. DickDickSean

답변

2

문자 클래스를 [\\P{sc=Han}*\\p{sc=Han}*[a-z]*[A-Z]*[0-9]*^<>]* 경기는 0 개 이상의 모든 문자 내 문자열과 동일하다 두 번째를 recgonize하지 않은 것 같다 \\P{sc=Han} 때문에 \\p{sc=Han}은 반대입니다. 나는 당신을 생각

원하는 :

Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9\s]*<f\"number\">"); 

나 : 당신은 공간을 추가 할 수 있습니다

Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9]*<f\"number\">"); 

는 XML/HTML을 구문 분석해야하는 경우

Pattern p = Pattern.compile("<f\"number\">[^<]*<f\"number\">"); 
+0

고맙습니다.이 하나를 시도했지만 m.group()은 여전히 ​​다른 모든 아이디어를 반환합니다. – DickDickSean

+0

그것은 작동합니다. 내가 바보. 고마워 ~ 3 ~ – DickDickSean

+0

@DickDickSean : 도움이 되니 기쁩니다. 대답을 받아 들인 것으로 표시해도 되니, 미래의 독자들에게 유용 할 것입니다. 참조 : http://stackoverflow.com/help/accepted-answer – Toto