2014-07-25 2 views
3

정규 표현식에서 "["와 "]"를 어떻게 일치시킬 수 있습니까? 이 하나가 작동하지 않습니다 : [\\[\\]] 나는 \\이 특수 문자의 사용을 가능하게한다고 생각했습니다. 나는 그 (것)들을 종류 안쪽에 매치하고 싶다.regexp에서 "["와 "]"를 어떻게 일치시킬 수 있습니까?

+0

내가 사용하고 C++ 11 정규 표현식 : 당신은 ] :

DEMO를 탈출 할 필요가 없습니다. –

+2

원시 문자열 리터럴을 사용하면 모든 것을 두 번 이스케이프 할 필요가 없다는 것에주의하십시오 :'R "([\ [\]])"' – chris

답변

4

엔진에 따라 다르며 특정 괄호 (열림과 닫음)가 일치하는지 또는 괄호 클래스와 일치하는지에 따라 다릅니다. 브라켓 브라켓

  • [][] 일치 개폐
  • \] 일치 개방

    • \[ 일치하는 개폐 브라켓 (.NET, 펄, PCRE 파이썬) 위와
    • []\[] 동일한 (어느 하나 CHAR Java 및 위의 4 엔진)
    • [[\]] 위와 동일 (JavaScript 및 위의 4 엔진)
    • 자바와 같은 언어의 소수를 백 슬래시 수프를 방지위와 동일 (루비, 모든 엔진)

    \\[ 및 흉한 다른 선도, 정규식 문자열에 백 슬래시를 탈출하도록 요구 유사 콘텐츠 다행히도 대부분의 언어는 백 슬래시를 피할 수있는 방법을 제공합니다.

  • R"(\])" 파이썬
  • 에서 C#을
  • r"\[" (원시 문자열)에서 자바 스크립트, PHP, 펄, 루비, VB.NET, VBScript를
  • @"\[" (그대로 문자열)에서와 같이

    • "\[" 사용할 수 있습니다 또는 C++ 11 (원시 문자열 리터럴)의 R"foo(\])foo" 원시 문자열은 괄호 사이에 있으며 선택 구분 기호 (두 번째 버전에서는 foo)로 묶을 수 있습니다.

    참조

    Interesting Character Classes

  • +0

    만약'''\ ['''''''' ]''', 나는 unregonized escape literal에 대한 경고를 받고있다. –

    +1

    닫는 괄호]는 이스케이프가 필요 없습니다 ...>와 마찬가지로 ... – user3811473

    +0

    도움을 주셔서 감사합니다. :) –

    1

    \[] 작동합니다. 일부 언어에서는 두 번 이스케이프 처리해야 할 수 있습니다. (즉, \\[]).

    참고 : 문자열 내부 http://regex101.com/r/vP4mQ9/1

    +0

    이제이 에러가 발생합니다 :'''regex_error (error_brack) : 표현에 mismached [와]''가 포함되어 있습니다. Regexp :'''\\ []'''(문자열 안에 있습니다.) –

    +0

    일치시키려는 텍스트를 제공 할 수 있습니까? – user3811473

    +0

    사실 구체적인 텍스트가 아닙니다. 양식에 "이름이 아닌"문자가 들어 있지 않음을 알고 싶습니다. –

    관련 문제