IT박스

정규 표현식에 ":"( "콜론")을 입력하는 방법은 무엇입니까?

itboxs 2020. 12. 8. 07:51
반응형

정규 표현식에 ":"( "콜론")을 입력하는 방법은 무엇입니까?


:( "콜론")은 정규 표현식에서 특별한 의미를 갖지만 [A-Za-z0-9.,-:]*. 나는 그것을 피하려고 시도했지만 작동하지 않습니다[A-Za-z0-9.,-\:]*


대부분의 정규식 구현 (Java 포함)에서 :문자 클래스 내부 나 외부에서 특별한 의미가 없습니다.

문제는 -클래스에서 범위 연산자 역할을 한다는 사실 때문일 가능성이 큽니다 .

[A-Za-z0-9.,-:]*

어디 ,-:사이의 모든 ASCII 문자와 일치 ','하고 ':'. ':'그러나 여전히 리터럴과 일치합니다 !

대신 이것을 시도하십시오.

[A-Za-z0-9.,:-]*

-클래스의 시작 또는 끝에 배치 하면 리터럴과 일치합니다 "-". Keoki Zee의 댓글에서 언급했듯이 -클래스 내부에서 탈출 할 수도 있지만 대부분의 사람들은 단순히 끝에 추가합니다.

데모 :

public class Test {
    public static void main(String[] args) {
        System.out.println("8:".matches("[,-:]+"));      // true: '8' is in the range ','..':'
        System.out.println("8:".matches("[,:-]+"));      // false: '8' does not match ',' or ':' or '-'
        System.out.println(",,-,:,:".matches("[,:-]+")); // true: all chars match ',' or ':' or '-'
    }
}

조심하세요 -. regexp에는 특별한 의미가 있습니다. A의 [], 당신은 문제없이 넣을 수 있습니다 그것이 끝 부분에 배치되는 경우 . 귀하의 경우, ,-:같은 촬영 에서 ,: .


콜론은 문자 클래스에서 특별한 의미가 없으며 이스케이프 할 필요가 없습니다. PHP 정규식 문서 에 따르면 문자 클래스에서 이스케이프해야하는 유일한 문자는 다음과 같습니다.

이외의 모든 영숫자가 아닌 문자 \, -, ^(시작시)과 종료는 ]문자 클래스에서 특별한 의미를 가지지 않지만, 그러나 그들은 탈출하는 경우는 전혀 해를 끼치하지 않습니다.

Java 정규식에 대한 자세한 정보 는 문서를 참조하십시오 .


.. \\:대신 사용 은 자바 문자열에서 특별한 의미를 갖습니다.\:\

참고 URL : https://stackoverflow.com/questions/6579921/how-to-type-colon-in-regexp

반응형