2013-02-16 6 views
0

* (한정 기호)를 입력하면 간단한 정규 표현식 패턴에서 실제로 문자 a가 포함되어 있어도 정규 표현식의 결과와 일치하지 않는 이유를 알고 있습니까? (어떤 경우 든 ""을 사용할 때 빈 문자열을 찾은 결과를 돌려 주어야합니다). 다른 문자와도 작동합니다 (예 : r * 및 b *). 문제가 없습니다. 따옴표 또는 괄호 사이에 내용을 넣으면 작동한다는 것을 알고 있습니다 ("a *"). 따옴표없이 b *를 사용할 수 있고 따옴표없이 *를 사용할 수없는 이유를 알고 싶을 지 모르겠다.Java에서 정규식 : a *

코드 :

Pattern pat = Pattern.compile(args[0]); 
     Matcher match = pat.matcher(args[1]); 
while (match.find()) 
     { 
      System.out.println("Indeed this the information I need:"+ match.group()); 

      System.out.println("Here it starts:"+match.start()); 
}  

I '는이'메타 문자뿐만 아니라 '전자'와 'F'는 것을 알고는 그들과 함께 정상적으로 작동합니다.

입력란에 args [0] = a * args [1] = abba를 삽입합니다.

아이디어가 있으십니까? 미리 감사드립니다.

답변

6

아마 *이 (가) Java를 실행하는 셸에서 확장되기 때문일 수 있습니다. args[0]의 내용을 인쇄 해보십시오. 일치하는 패턴이 일치한다고 생각하는 패턴이 아닐 것입니다.

a* 대신에 'a*' 인수를 인용 해 수정할 수 있습니다. 위해

+0

안녕 황색에 관심이있는, 당신 말이 맞아! 그러나 왜 그것이 일어나는가!? 그것은 이전에 만든 인터페이스의 클래스 파일 인 animable.class에서 확장되었습니다. 셸에서 원치 않는 바로 가기의 캐시를 지울 수있는 방법이 있습니까? – Rollerball

+0

'*'는 특정 바로 가기가 아니라 셸에 내장 된 와일드 카드입니다. 쉘에'a *'는 "현재 디렉토리에서'a'로 시작하는 모든 파일을 의미합니다. 와일드 카드를 확장하지 않으려면 인수를 인용해야합니다. – Amber

0

당신의 정규식처럼하는 것을 선택 : "(a*)"을하고 group(1)