2016-08-01 1 views

답변

-1
final String VALUE = "value=\""; 
int start = out.indexOf(VALUE) + VALUE.length(); 
int end = out.indexOf("\"", start); 
System.out.println(out.substring(start, end)); 
-1

이 같은 물건을 할 수있는 가장 좋은 방법은 정규 표현식을 사용하는 것입니다. "= 값"이것은 하나 accourance 하나 개의 라인 입력 만하고있다

String out= "<input type=\"hidden\" name=\"javax.faces.ViewState\" id=\"javax.faces.ViewState\" value=\"H4sIAAA\" autocomplete=\"off\" />"; 
Pattern pattern = Pattern.compile(".*(value=\"(\\w*)\").*", Pattern.CASE_INSENSITIVE); 
Matcher matcher = pattern.matcher(out); 

if (matcher.matches()) { 
    System.out.println(matcher.group(2)); 
} 

:

간단한 예를 정확하게 문제를 일치.

무엇이 있나요?

  1. 그것은 전체 문자열, "값"속성 및 속성 "값"의 값을 갖는 제 2 그룹으로 그룹에 일치하는 정규 표현 정합 준비

  2. 이 사용 정합을 작성 매처가 일치하는 경우 패턴과

  3. "밖으로"당신의 지정된 문자열은이 속성 값 그룹의 콘텐츠 2를 출력합니다

정규식을 사용할 때의 이점은 표현식이 무엇인지에 관계없이 원하는 모든 내용을 무시하고 원하는 추출물에 집중시킬 수 있다는 것입니다. 이 예제는 정확히 하나의 값 속성이있는 한 행 입력에만 유용합니다. hole html 페이지를 파싱하려면 사용자의 요구에 맞게 html 페이지를 확장해야합니다.

정규식 문서 : http://regexr.com/

재밌게 : 정규식을 테스트 할 수 https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html 좋은 장소!