수색…


비고

간단한 수업

정규식 성냥
[abc] 다음 문자 중 하나 : a , b 또는 c
[az] 어떠한 문자 에 a z 포괄적 (이 범위라고 함)
[0-9] 에서 모든 숫자 09 (포함)

공통 수업

문자의 일부 그룹 / 범위는 자주 사용되며 특수 약어가 있습니다.

정규식 성냥
\w 영숫자와 밑줄 ( "단어 문자"라고도 함)
\W 단어가 아닌 문자 ( [^\w] 와 동일)
\d 숫자 (페르시아 숫자, 인도 문자 등을 포함하여 [0-9] 보다 큼)
\D 페르시아 숫자, 인도식 문자를 거부 한 이후 [^0-9] 보다 짧은 자릿수가 아닌 자릿수
\s 공백 문자 (공백, 탭 등) 참고 : 엔진 / 컨텍스트에 따라 다를 수 있습니다.
\S 비 공백 문자

수업 거부

여는 대괄호 뒤에있는 캐럿 (^) 은 그 뒤에 오는 문자의 부정으로 작동합니다. 이것은 문자 클래스에없는 모든 문자와 일치합니다.

제외 된 문자 클래스도 줄 바꿈 문자와 일치하므로 일치하지 않으면 특정 줄 바꿈 문자를 클래스 (\ r 및 / 또는 \ n)에 추가해야합니다.

정규식 성냥
[^AB] 이외의 모든 문자 및 A B
[^\d] 숫자를 제외한 모든 문자

기본 사항

Team A , Team B , ..., Team Z 라는 팀 목록이 있다고 가정 해 보겠습니다. 그때:

  • Team [AB] : Team A 또는 Team B 중 하나와 일치합니다.
  • Team [^AB] : Team A 또는 Team B 제외한 모든 팀과 일치합니다.

우리는 종종 어떤 문맥이나 다른 문맥 ( A 부터 Z 까지 A 글자와 같은)에서 "속한"문자들을 일치시킬 필요가 있으며, 이것은 문자 클래스가 사용하는 것입니다.

서로 다른 유사 단어 일치

문자 클래스 [aeiou] 생각해보십시오. 이 문자 클래스는 정규 표현식에서 유사한 철자 단어 세트를 일치시키는 데 사용될 수 있습니다.

b[aeiou]t 일치 :

  • 박쥐
  • 내기
  • 비트
  • 그러나

일치하지 않는 항목 :

  • BT
  • bt

문자 클래스는 한 번에 한 문자 씩만 일치합니다.

영숫자가 아닌 문자 일치 (부정 문자 클래스)

[^0-9a-zA-Z]

이것은 숫자 나 문자가 아닌 모든 문자 (영숫자)와 일치합니다. 밑줄 문자 _ 도 무효화되면 식은 다음과 같이 짧아 질 수 있습니다.

[^\w]

또는:

\W

다음 문장에서 :

  1. 어때 잘 지내?

  2. 나는 2017 년을 기다릴 수 없다!

다음 문자가 일치합니다.

  1. , , , ' ? 끝 문자.

  2. ' , , ! 끝 문자.

유니 코드 참고
유니 코드 문자 속성을 지원하는 일부 맛은 다른 유니 코드 문자를 의미하는 [\p{L}\p{N}_][^\p{L}\p{N}_]\w\W 를 해석 할 수 있습니다 숫자도 포함됩니다 ( PCRE 문서 참조). 다음은 PCRE \w 테스트입니다 . 여기에 이미지 설명을 입력하십시오.

.NET에서, \w = [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Mn}\p{Nd}\p{Pc}] PCRE와 달리 \p{Nl}\p{No} 와는 일치하지 않음을주의하십시오 ( \w .NET 문서 참조 ).

그림

어떤 이유로 든 유니 코드 3.1 소문자 (예 : 𝐚𝒇𝓌𝔨𝕨𝗐𝛌𝛚 )가 일치하지 않습니다.

Java의 (?U)\w 는 PCRE와 .NET에서 일치하는 \w 의 조합과 일치합니다. 여기에 이미지 설명을 입력하십시오.

비 숫자 매칭 (부정 문자 클래스)

[^0-9]

이것은 ASCII 숫자가 아닌 모든 문자와 일치합니다.

유니 코드 숫자도 부정되는 경우, 다음 표현식을 사용할 수 있습니다.

[^\d]

다음과 같이 단축 할 수 있습니다.

\D

u 수정자를 사용하여 명시 적으로 또는 일부 언어에서 프로그래밍 방식으로 유니 코드 문자 속성 지원을 활성화해야 할 수도 있지만 이는 명백하지 않을 수 있습니다. 인 텐트를 명시 적으로 전달하기 위해 다음 구조를 사용할 수 있습니다 (지원이 사용 가능한 경우).

\P{N}

어떤 정의에 의미 : 모든 스크립트에서 숫자 문자가 아닌 모든 문자. 부정 문자 범위에서는 다음을 사용할 수 있습니다.

[^\p{N}]

다음 문장에서 :

  1. 어때 잘 지내?

  2. 나는 2017 년을 기다릴 수 없다!

다음 문자가 일치합니다.

  1. , , , ' ? , 줄 끝 문자 및 모든 문자 (소문자 및 대문자).

  2. ' , , ! , 줄 끝 문자 및 모든 문자 (소문자 및 대문자).

초급자가 직면하는 인성 계급 및 공통 문제

1. 캐릭터 클래스

문자 클래스는 [] 로 표시됩니다. 문자 클래스 내의 내용은 single character separately 로 처리됩니다. 예를 들어 우리가

[12345]

위의 예에서 일치하는 1 or 2 or 3 or 4 or 5 합니다. 간단히 말해 or condition for single characters ( or condition for single characters 스트레스) 로 이해 or condition for single characters 으로 이해 될 수 있습니다.

1.1주의 사항

  • 문자 클래스에는 문자열을 일치시키는 개념이 없습니다. 따라서 regex [cat] 사용하고 있다면 문자 그대로 cat 이라는 단어와 일치해야한다는 의미는 아니지만 c 또는 a 또는 t 와 일치해야 함을 의미합니다. 이것은 regex에 새로운 사람들 사이에 존재하는 매우 일반적인 오해입니다.
  • 때때로 사람들은 | (교대) 문자 클래스 내에서 그것은 잘못된 OR condition 작용할 것이라고 생각합니다. 예 : [a|b] 실제로 a 또는 | 와 일치 함을 의미합니다. (문자 그대로) 또는 b .

2. 문자 클래스의 범위

문자 클래스의 범위는 - 기호로 표시됩니다. 영문자 A ~ Z 문자를 찾고 싶다고합시다. 다음 문자 클래스를 사용하여이 작업을 수행 할 수 있습니다.

[A-Z]

이것은 유효한 ASCII 또는 유니 코드 범위에 대해 수행 할 수 있습니다. 가장 일반적으로 사용되는 범위는 [AZ] , [az] 또는 [0-9] 입니다. 또한이 범위는 문자 클래스로 결합 할 수 있습니다.

[A-Za-z0-9]

즉, 범위 A to Z 또는 a to z 또는 0 to 9 문자 0 to 9 . 순서는 무엇이든 될 수 있습니다. 따라서 위에서 정의한 범위가 정확하면 위의 내용은 [a-zA-Z0-9] 와 동일합니다.

2.1주의 사항

  • 때로는 A 에서 Z 까지의 범위를 작성할 때 [Az] 로 작성합니다. 우리가 Z 대신 z 를 사용하기 때문에 이것은 대부분의 경우에 잘못입니다. 따라서 이것은 ASCII 범위 90 (Z) 다음에 많은 의도하지 않은 문자가 포함 된 ASCII 범위 65 (A) ~ 122 (z)의 문자와 일치한다는 것을 나타냅니다. 그러나 특정 언어에 대해 데이터 정렬이 설정되면 [Az] 는 POSIX 스타일 정규 표현식의 모든 [a-zA-Z] 문자를 일치시키는 데 사용할 수 있습니다. LC_COLLATE="en_US.UTF-8" Cygwin에서 [[ "ABCEDEF[]_abcdef" =~ ([Az]+) ]] && echo "${BASH_REMATCH[1]}"[[ "ABCEDEF[]_abcdef" =~ ([Az]+) ]] && echo "${BASH_REMATCH[1]}" 하면 ABCEDF 생성 ABCEDF . [[ "ABCEDEF[]_abcdef" =~ ([Az]+) ]] && echo "${BASH_REMATCH[1]}" LC_COLLATEC 설정하면 (Cygwin에서 export 완료) 예상 된 ABCEDEF[]_abcdef 있습니다.

  • 의미 - 내부 문자 클래스는 특별합니다. 위에서 설명한대로 범위를 나타냅니다. 우리가 일치 할 경우 - 문자 그대로? 우리는 두 문자 사이에 놓으면 범위를 나타낼 것입니다. 이 경우 우리는 넣어야 할 - 같은 문자 클래스의 시작에 [-AZ] 나 같은 문자 클래스의 끝에서 [AZ-] 또는 escape it 당신처럼 중간에 그것을 사용하려는 경우 [AZ\-az] .

3. 부정적 문자 클래스

부정 문자 클래스는 [^..] 로 표시됩니다. 캐럿 기호 ^ 는 문자 클래스에있는 문자를 제외한 모든 문자와 일치한다는 것을 나타냅니다. 예

[^cat]

c 또는 a 또는 t 제외한 모든 문자를 t .

3.1주의 사항

  • 캐럿 기호 ^ 의 의미는 문자 클래스 시작시에만 부정에 매핑됩니다. 문자 클래스의 다른 곳에서는 특별한 의미가없는 문자 그대로의 캐럿 문자로 처리됩니다.
  • 어떤 사람들은 [^] 와 같은 정규식을 씁니다. 대부분의 regex 엔진에서는 오류가 발생합니다. 그 이유는 ^ 를 시작 위치에 사용하고있을 때, 부정되어야 할 적어도 하나의 문자를 기대하기 때문입니다. JavaScript 에서는, 이것은 아무것도 아닌 , 즉 가능한 모든 심볼 (그러나 적어도 ES5에서는 발음 구별 부호)과 일치하는 유효한 구조입니다.

POSIX 문자 클래스

POSIX 문자 클래스는 특정 문자 집합에 대해 미리 정의 된 시퀀스입니다.

문자 클래스 기술
[:alpha:] 영문자
[:alnum:] 영문자와 숫자
[:digit:] 자릿수
[:xdigit:] 16 진수
[:blank:] 스페이스 및 탭
[:cntrl:] 제어 문자
[:graph:] 표시되는 문자 (공백 및 제어 문자 제외)
[:print:] 보이는 문자와 공백
[:lower:] 소문자
[:upper:] 대문자
[:punct:] 구두점 및 기호
[:space:] 줄 바꿈을 포함하여 모든 공백 문자

구현 및 / 또는 로케일에 따라 추가 문자 클래스를 사용할 수 있습니다.

문자 클래스 기술
[:<:] 단어의 시작
[:>:] 단어의 끝
[:ascii:] ASCII 문자
[:word:] 문자, 숫자 및 밑줄. \w 와 같습니다.

대괄호 시퀀스 (일명 문자 클래스)를 내부에서 사용하려면 대괄호도 포함해야합니다. 예:

[[:alpha:]]

이것은 하나의 영문자와 일치합니다.

[[:digit:]-]{2}

이것은 자릿수 또는 - 2 개의 문자와 일치합니다. 다음과 일치합니다.

  • --
  • 11
  • -2
  • 3-

자세한 정보는 Regular-expressions.info에서 확인할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow