2011-11-25 2 views
0

내 코드에서 정규 표현식을 구현할 때 문제가 발생합니다 ...정규식이 작동하지 않습니다. java.util.regex. *;

나는 그것에 대한 간단한 설명을 해드 리겠습니다 ... 그 String에 요소가 들어 있는지 검사 할 String을받는 함수가 있습니다. ArrayList (이 요소는 하나 이상의 단어 일 수 있음). 목록의 요소가 포함되어 있지 않으면 파일에 쓰기 위해 반환되고 그렇지 않으면 무시됩니다. 먼저 나는 한 다음

private boolean containDiscontinuedWord(String query) { 
Matcher matcher; 
Pattern pattern; 
    for (String blackL : blackList) { 
     pattern = Pattern.compile("\\b" + blackL + "\\b"); 
     matcher = pattern.matcher(query); 
      while(matcher.find()) { 
       return true; 
      } 
    } 
    return false; 
} 

내가 여기에이 문제는 내가 리눅스 환경에서 응용 프로그램을 실행할 때 JVM (1.5 설치)하는 것이 아무 것도 파일에 기록되지이다 ...하지만 그것은 창에서 수행 환경. 내 응용 프로그램은 1.6과 1.5 호환성을 가지고 만들어졌습니다.

그래서 나는 다음과 같은 한 :

private boolean containDiscontinuedWord(String query) { 
    for (String blackL : blackList) { 
     if(query.matches(".*\\b(" + blackL + ")\\b.*")){ 
      return true; 
     } 
    } 
    return false; 
} 

그리고이 기능은 잘하지만없이 작동을 "*"나는 정확히 일치에 사용할 필요하지만, 다시 내 정규 표현식의 ...하지만 Windows 환경에서 잘 실행됩니다. 나는 이것에 대해 여러 가지 방법으로 검색했지만이 문제를 해결하는 것을 찾을 수 없다. 내 정규 표현이 정확하지 않거나 무엇이 될 수 있는지 모르겠다 ... 너희들이 나에게 단서를 줄 수 있기를 바란다. !

이것이 바보 같은 질문 인 경우 사과드립니다.하지만 읽어 주셔서 감사합니다.

+2

당신은이 파일에 기록'containDiscontinuedWord'의 문제가 아니라 비트의 확인 했습니까? –

+0

데이브 뉴톤 (Dave Newton)이 말했듯이, 아마도 당신은 잘못된 지점을보고있을 것입니다. –

+0

정규식을 사용하기 전에 contains(); 하지만 예를 들어 String query = "이것은 내가 가장 좋아하는 노트북입니다."; 그리고 ArrayList에서 엘리먼트가 "favorite laptop"이었지만 작동하지 않을 것이지만 "favorite"또는 "laptop"일 경우에만 사용됩니다. 와 함께 잘 작동하지만, 오직 하나의 단어를 찾을 수있는 경우에만 포함되어 있습니다 ... – seas

답변

0

indexOf을 심각하게 조사해야합니다. 정규 표현식을 작성하는 방식은 이미 매우 오류가 발생하기 쉽습니다 (인용에 대해 생각하십시오). 게다가, 당신은 "매칭"과 "정규식"의 차이를 이해하지 못했습니다.

+0

그래, 난 indexOf() 밖에 나가는 것 같아요,하지만 난 왜 찾을 수있는 어떤 대답을 찾을 수 없습니다() 작동하지 않습니다 그게 왜 match() 함수를 정규 표현식으로 조정했는지,하지만 내가 말했듯이 *, 고마워요. – seas

관련 문제