RegEx를 사용하여 두 XML 태그 간의 모든 정보 검색
인RegEx
태그와 둘 사이의 모든 것을 찾고 싶다.XML tags
다음과 같습니다.
<primaryAddress>
<addressLine>280 Flinders Mall</addressLine>
<geoCodeGranularity>PROPERTY</geoCodeGranularity>
<latitude>-19.261365</latitude>
<longitude>146.815585</longitude>
<postcode>4810</postcode>
<state>QLD</state>
<suburb>Townsville</suburb>
<type>PHYSICAL</type>
</primaryAddress>
태그와 그 사이의 모든 것을 찾고 싶다.primaryAddress
, 그것을 지웁니다.
사이의 모든 것primaryAddress
태그는 변수입니다만, 태그와 서브태그를 모두 삭제할 수 있습니다.primaryAddress
.
어떻게 하는지 아는 사람?
HTML/XML 구문 분석에 regex를 사용하는 것은 좋지 않습니다.
그러나 이 작업을 수행하려면 regex 패턴을 검색하십시오.
<primaryAddress>[\s\S]*?<\/primaryAddress>
빈 문자열로 바꾸면...
다음 항목과 일치시킬 수 있어야 합니다./<primaryAddress>(.+?)<\/primaryAddress>/
태그 간의 내용은 일치하는 그룹에 속합니다.
이 방법을 사용하는 것은 좋지 않지만 regex로 분할하려면
<primaryAddress.*>((.|\n)*?)<\/primaryAddress>
확인 응답은 태그를 반환하지만 태그 사이의 값만 반환합니다.
이것은 가장 바깥쪽 레이어 태그 쌍을 캡처할 수 있으며, 측면에 속성이 있거나 끝 태그가 없는 경우에도 캡처할 수 있습니다.
(<!--((?!-->).)*-->|<\w*((?!\/<).)*\/>|<(?<tag>\w+)[^>]*>(?>[^<]|(?R))*<\/\k<tag>\s*>)
edit: 위의 코멘트에서 설명한 바와 같이 regex는 항상 xml을 해석하기에 충분하지 않습니다. regex를 더 많은 상황에 맞게 수정하려고 하면 더 길어질 뿐이지만 여전히 사용할 수 없습니다.
이 경우 XML을 수신합니다.String
'특수한' 문자가 있는 가치관을 없애야 합니다.&<>
기타. 기본적으로 다음과 같은 형태로 XML을 제공할 수 있습니다.
<notes>
<note>
<to>jenice & carl </to>
<from>your neighbor <; </from>
</note>
</notes>
그래서 난 그걸 찾아야 해String
가치관jenice & carl
그리고.your neighbor <;
그리고 적절하게 탈출한다.&
그리고.<
(나중에 이름을 변경할 엔진에 전달하면 비활성 xml이 됩니다).
regex로 이것을 하는 것은 처음에는 다소 바보 같은 생각이지만, 그것은 싸고 쉽다.내가 했던 것과 같은 일을 하고 싶어하는 용감한 사람들, 여기 있다.
String xml = ...
Pattern p = Pattern.compile("<(.+)>(?!\\R<)(.+)</(\\1)>");
Matcher m = p.matcher(xml);
String result = m.replaceAll(mr -> {
if (mr.group(2).contains("&")) {
return "<" + m.group(1) + ">" + m.group(2) + "+ some change" + "</" + m.group(3) + ">";
}
return "<" + m.group(1) + ">" + mr.group(2) + "</" + m.group(3) + ">";
});
언급URL : https://stackoverflow.com/questions/13241615/find-everything-between-two-xml-tags-with-regex
'source' 카테고리의 다른 글
브라우저 창/탭이 닫혔을 때 localStorage 항목을 삭제하는 방법 (0) | 2022.09.12 |
---|---|
.jar 파일에서 소스 코드를 추출합니다. (0) | 2022.09.12 |
사용자가 다운로드 할 수 있는 메모리 내에 파일을 작성하는 방법(서버 경유는 아님) (0) | 2022.09.12 |
같은 junit 테스트를 몇 번이고 실행할 수 있는 쉬운 방법? (0) | 2022.09.12 |
Panda DataFrame 열 머리글에서 목록 가져오기 (0) | 2022.09.12 |