정규식을 사용하여 태그 안에 XML 태그와 텍스트를 모두 추출하려고합니다. 나는 정규식을 사용하는 것이 최선의 선택이 아니라는 것을 알고있다. 필자는 인라인 텍스트 파일에 태그가 거의 없으므로 XML 파서를 선택하지 않았습니다.정규식을 사용하여 태그 사이의 텍스트 및 태그 추출
String txt="American Airlines made <TRIPS> 100 </TRIPS> flights in <DATE> December </DATE> over <ROUTE> Altantic </ROUTE> ";
String re1="<([^>]+)>"; // Tag 1
String re2="([^<]*)"; // Variable Name 1
String re3="</([^>]+)>"; // Tag 2
// String re3 = re1;
Pattern p = Pattern.compile(re1+re2+re3,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = p.matcher(txt);
if (m.find())
{
String tag1=m.group(1);
String var1=m.group(2);
System.out.println(tag1.toString());
System.out.println(var1.toString());
}
문제는 첫 번째 태그 만 식별하고 두 번째 태그는 식별하지 않는 것입니다.
반면에 경우 전류 출력
TRIPS
100
원하는 출력
TRIPS
100
DATE
December
ROUTE
Altantic
사용 ['<([^>] *)> (*) <\/\1>'] (https://regex101.com/r/oLvTL9/ 1) & 두 번째 그룹을 추출하십시오. – Tushar
'if (m.find())'를 while (m.find())로 변경하십시오. – Mariano
올바르게 ''과 같이 TRIPS 요소를 닫고 주석 처리 된 re3 버전을 사용하십시오. 그렇지 않으면 올바르게 닫힌 다른 요소와 일치시킬 수 없습니다. –