문제

텍스트 파일 (또는 XML 파일)을 전체 문자열로 표시하고 특정 문자열을 검색 (또는 일치)하려면 어떻게해야합니까?

BufferedReader 객체를 만들었습니다.

BufferedReader input =  new BufferedReader(new FileReader(aFile));

그런 다음 다음과 같은 다른 구분 장치를 지정하기 위해 스캐너 클래스를 사용하려고했습니다.

//Scanner scantext = new Scanner(input);
//Scanner scantext = new Scanner(input).useDelimiter("");
Scanner scantext = new Scanner(input).useDelimiter("\n");
while (scantext.hasNext()) {  ... }

이와 같은 스캐너 클래스를 사용하면 텍스트를 한 줄씩 또는 단어별로 읽을 수 있지만 때로는 처리하고 싶은 텍스트에서는 도움이되지 않습니다.

</review><review>

그리고 나는 당신이 찾으면 ""<review>"텍스트의 어느 곳에서나 찾을 때까지 다음 다음 줄 (또는 텍스트 조각)으로 무언가를하십시오."</review>". 문제는 그 것입니다 <review> 그리고 </review> 텍스트의 다른 장소에 있으며 때로는 다른 텍스트에 붙어 있습니다 (따라서 구분 기자로서 빈 공간은 나를 도와주지 않습니다).

Java (패턴 및 매칭 클래스)에서 정규식 API를 사용할 수 있다고 생각했지만 특정 문자열이나 줄과 일치하는 것처럼 보이며 텍스트를 하나의 연속 문자열로 사용하고 싶습니다 (적어도 이것은 내 인상이었습니다. 내가 그들에 대해 읽은 것에서). 이 경우 어떤 구조/방법/클래스를 사용해야하는지 말해 주시겠습니까? 고맙습니다.

도움이 되었습니까?

해결책

정규 표현식으로 XML을 구문 분석하려고하지 마십시오. 그것은 단지 고통으로 이어집니다. 많이있다 아주 좋아요 기존의 XML 아피스 이미 자바에서; 왜 그들을 재창조하려고합니까?

어쨌든, 텍스트 파일의 문자열을 검색하려면 다음을해야합니다.

  1. 파일을 문자열로로드합니다 (예시)
  2. a Pattern 검색합니다
  3. a Matcher 경기를 통해 반복합니다

다른 팁

마치 당신이 구조화 된 XML 파일로 작업하려고하는 것처럼 보이며, 당신이 조사 할 것을 제안합니다. javax.xml.parsers.documentBuilder 또는 기타 내장 아피스 문서를 구문 분석합니다.

XML 파서를 사용하십시오.

또는 이와 같이 xpath를 사용하십시오 예시.

Java (패턴 및 매칭 클래스)에서 정규식 API를 사용할 수 있다고 생각했지만 특정 문자열이나 줄과 일치하는 것처럼 보이며 텍스트를 하나의 연속 문자열로 사용하고 싶습니다.

음, XML 파일을 문자열로 읽은 다음 일반 표현식 API를 사용하여 작동하지 않습니까?

예 : 예를 들어 문자열로 파일을 쉽게 읽을 수 있습니다. 파일 아파치에서 커먼즈 IO: 보다 readFileToString(File file, String encoding).

나는 또한 XML Parsing API를 사용하는 것이 좋습니다 ... 그러나 "검토"태그의 경우에만 무언가를하고 싶기 때문에 Dom보다 Sax를 더 잘 사용할 수 있습니다 ...

여기서는 텍스트 파일의 개별 행을 문자열로 복사 한 다음 문자열 (줄)과 하위 문자열 (검색 문자열)을 일치시킬 수 있습니다.

그러나 / # 등과 같은 MetachAracters를 엑드된 동안 오류가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top