정규식 포인트의 다른 동작은 무엇입니까?

정규식 포인트의 다른 동작은 무엇입니까?

이 위키 기사에서:정규식

예를 들어, 정규식에서 "a"의 리터럴 문자만 일치시키는 대신 a.메타 문자는 개행 문자를 제외한 모든 문자와 일치합니다. 따라서 이 정규식은 , 또는 , 또는 와 일치합니다 .a.aaxa0

하지만 자바 프로그램에서는 dot( .)가 0번 항목과 일치하지 않는 것을 볼 수 있습니다.

System.out.println (Pattern.matches("geeksforge.ks", "geeksforgeks"));    //false
System.out.println (Pattern.matches("geeksforge.",  "geeksforge"));       //false
  1. 위키에서 인용된 텍스트는 정규식의 어떤 변형을 참조합니까?
  2. Java는 어떤 정규식 변형을 사용합니까?

나는 POSIX와 Perl이라는 정규식의 두 가지 변형/구문을 알고 있습니다. 하지만 더 많은 변형이 있는지, 어떤 언어가 어떤 언어를 사용하는지 확실하지 않습니까?

답변1

최신에 따르면자바 API 문서, 점( .) 문자는 "모든 문자(줄 종결자와 일치할 수도 있고 일치하지 않을 수도 있음)"와 일치합니다. 그것은 0번의 발생과 일치한다고 말하지 않습니다. 링크된 기사를 읽은 후에도 해당 지점이 0번 발생과 일치한다고 명시되어 있지 않습니다.

*정규 표현식이 0개 항목과 일치하도록 하려면 별표( ) 또는 물음표( ) 수량자를 사용해야 합니다. ?이는 특히 앞에 나오는 문자가 0개 이상 일치하는 것과 일치하기 때문입니다.

System.out.println (Pattern.matches("geeksforge.?ks", "geeksforgeks")); //true
System.out.println (Pattern.matches("geeksforge.?",  "geeksforge"));    //true
System.out.println (Pattern.matches("geeksforge.*ks", "geeksforgeks")); //true
System.out.println (Pattern.matches("geeksforge.*",  "geeksforge"));    //true

문서에 따르면 java정규식은 Perl 및 POSIX 구문을 모두 지원하지만 차이점과 지원되는 것과 지원되지 않는 것을 이해하려면 설명서를 읽어야 합니다.

관련 정보