이 위키 기사에서:정규식
예를 들어, 정규식에서 "a"의 리터럴 문자만 일치시키는 대신
a.
메타 문자는 개행 문자를 제외한 모든 문자와 일치합니다. 따라서 이 정규식은 , 또는 , 또는 와 일치합니다 .a
.
a
ax
a0
하지만 자바 프로그램에서는 dot( .
)가 0번 항목과 일치하지 않는 것을 볼 수 있습니다.
System.out.println (Pattern.matches("geeksforge.ks", "geeksforgeks")); //false
System.out.println (Pattern.matches("geeksforge.", "geeksforge")); //false
- 위키에서 인용된 텍스트는 정규식의 어떤 변형을 참조합니까?
- 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 구문을 모두 지원하지만 차이점과 지원되는 것과 지원되지 않는 것을 이해하려면 설명서를 읽어야 합니다.