http 응답 본문에서 오는 아래 텍스트의 페이지 id 값을 가져 오려면 패턴 일치 프로그램이 필요합니다.Java Matcher 클래스
<meta name="ajs-page-id" content="262250">
저는 이후에 항상 responsebody에서 생성되는이 줄에서 내용 값을 가져옵니다.
http 응답 본문에서 오는 아래 텍스트의 페이지 id 값을 가져 오려면 패턴 일치 프로그램이 필요합니다.Java Matcher 클래스
<meta name="ajs-page-id" content="262250">
저는 이후에 항상 responsebody에서 생성되는이 줄에서 내용 값을 가져옵니다.
Pattern pat = Pattern.compile("<meta\\sname=\"ajs-page-id\"\\scontent=\"(\\d+)\">");
분명히 매우 문자적인 패턴이지만 그룹 (1)은 번호를 문자열로 반환해야합니다. 테스트하지 않았습니다.
jsoup과 같은 HTML 파서를 사용하여 파트를 구문 분석하고 검색하십시오. 이것을 위해 정규식을 사용하지 않아야합니다. 예를 들어,
,
String htmlStr = "<meta name=\"ajs-page-id\" content=\"262250\">";
Document doc = Jsoup.parse(htmlStr);
Element meta = doc.select("meta[name=ajs-page-id]").first();
if (meta != null)
{
System.out.println(meta.attr("content"));
}
거의 확실하게 안전합니다. 그러나 입력 텍스트로 무엇을 할 계획인지에 따라 정규식은 거의 확실히 빠르며 메모리에 적은 개체를 만듭니다. 또한 입력 텍스트의 도메인을 잘 알고 있으면 잠재적으로 훨씬 안전하지 않을 수 있습니다. 소프트웨어 개발의 모든 것과 마찬가지입니다. 일반적으로 안전을 위해 메모리와 속도를 희생하는 것은 괜찮지 만, 모든 사람에게 해당되는 것은 아닙니다 (즉, 내가 일하는 회사는 성능에 엄청난 관심이 있습니다). – gnomed
글쎄, 거기에 더 이상 (지금 삭제 된) "대답"에서 작동하지 않는다고 주장했기 때문에 당신이 Asker에서 놓친 것 같습니다. 그 태그가 작동하지 않는 이유와 왜 파싱되어야하는지에 대한 이유는 태그가 그 패턴에 머물러 있지 않기 때문입니다. 나는 결코 변하지 않을 것이라는 것을 안다면 정규 표현식으로 되돌릴 수도 있지만 동의하지 않는 것이 최선의 선택 일 것이라고 나는 동의한다. –
나는 등 몸 응답 추가 할 수 있습니다, 그에게 기회를주지 : 경기 = pattern.matcher (bodyResponse를) 또는 내가 선으로 그것을 깰해야합니까? – user979587
은 아마'\\ s +'를 사용해야합니다. 또한 속성이이 순서대로 표시된다는 보장이 없으며 대부분 그렇게 할 수도 있습니다. – MeBigFatGuy
@ user979587 텍스트 본문 전체에서 실행할 수 있어야합니다. matcher.find()에 대한 반복 된 호출은 모든 발생을 순차적으로 실행합니다. – gnomed