2012-06-05 3 views
0

정규식 쿼리를 키워드 쿼리로 변환하려고합니다. 키워드 쿼리를 사용하면 정규식 쿼리의 수퍼 세트가됩니다. 예를 들어정규식 쿼리를 영어 키워드 쿼리로 변환

  • "호스트. " "호스트"
  • "호스트 ((? 10 \ 0.6 \ 0.2 *)) ChuckN *"변환 할 수 있습니다로 변환 할 수 있습니다에 "호스트 *", " 106 ","척 "
  • "호스트. * 등록. + 호스트 * ","* "
  • 는"10 \ 0.64 \ 0.2 * 10 "으로 변환 할 수"등록 "으로 변환 할 수있다" 64 * "

나는 이것을 위해 잎 elem을 가진 정규식 트리를 찾고있다. ents를 결합하여 키워드 쿼리를 얻을 수 있습니다. 정규식을 저장하는 데 사용되는 패턴 클래스 내부의 데이터 구조에 액세스하려고합니다. 이것이 어떻게 행해질 수 있는지 또는 다른 방법이 있다면 알려주십시오.

답변

0
System.out.println(
     ( "host." 
     + "\nhost ((?10\\.6\\.2*)) ChuckN*" 
     + "\nhost.* registered.+" 
     + "\n10\\.64\\.2*" 
    ) 
     .replaceAll("(.?\\*)", "*") 
     .replaceAll("\\.\\+", "*") 
     .replaceAll("\\\\.", " ") 
     .replaceAll("(\\.?[^A-Za-z0-9 \\*\\n])", "") 
    ); 

출력

host 
host 10 6 * Chuck* 
host* registered* 
10 64 * 

편집 : 수정 마지막 완전히 대체하기 라인.

마지막으로 .replaceAll ("sString", "")에 sString을 완료해야 할 수 있습니다.

관련 문제