이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 9.7. 윈 토토 매칭버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.7. 패턴 매칭

패턴 토토 핫에는 세 가지 접근 방식이 있습니다. 제공자:포스트그레SQL: 전통적인SQL 좋아요연산자, 더 최근의 것유사함연산자(SQL:1999에 추가됨) 및POSIX-스타일 일반 표현. 기본을 제외하고"이렇죠 문자열이 이 패턴과 토토 핫합니까?"연산자, 함수는 토토 핫하는 하위 문자열을 추출 또는 교체하고 분할할 수 있습니다. 토토 핫하는 위치의 문자열입니다.

팁:패턴 토토 핫가 필요한 경우 이 외에도 Perl에서 사용자 정의 함수를 작성하는 것을 고려해보세요. 또는 Tcl.

주의

대부분의 정규식 검색을 실행할 수 있지만 매우 빠르게 정규식을 고안할 수 있습니다. 처리하는 데 임의의 시간과 메모리가 필요합니다. BE 정규식 검색 패턴을 받아들이는 것을 조심하세요. 적대적인 소스. 부득이하게 해야 할 경우에는 다음을 수행하는 것이 좋습니다. 명령문 시간 초과를 부과합니다.

다음을 사용하여 검색비슷한 것 에게패턴에는 동일한 보안 위험이 있습니다. 이후유사함다음 중 많은 것을 제공합니다. 와 동일한 기능POSIX-스타일 정규식.

좋아요검색, 존재 다른 두 가지 옵션보다 훨씬 간단하고 사용하기에 더 안전합니다. 적대적일 가능성이 있는 패턴 소스가 포함되어 있습니다.

9.7.1. 좋아요

문자열좋아요패턴 [탈출이스케이프 문자]
문자열좋아하지 않음패턴 [탈출이스케이프 문자]

좋아요표현식 반환 다음과 같은 경우 참입니다.문자열토토 핫 공급됨패턴. (예상대로, 그만큼좋아하지 않음표현식 반환 거짓인 경우좋아요참을 반환하고, 그 반대. 동등한 표현은 다음과 같습니다.아님 (문자열좋아요패턴).)

만약패턴포함하지 않음 퍼센트 기호 또는 밑줄이 있는 경우 패턴은 다음을 나타냅니다. 문자열 자체; 그 경우에는좋아요동등 연산자처럼 작동합니다. 안 밑줄(_) in패턴(토토 핫) 모든 단일을 나타냅니다. 성격; 퍼센트 기호(%) 토토 핫 0개 이상의 문자로 구성된 시퀀스.

일부 예:

'abc' LIKE 'abc''abc' LIKE 'a%''abc' LIKE '_b_''abc' LIKE 'c'거짓

좋아요항상 토토 핫하는 패턴 전체 문자열을 덮습니다. 따라서 시퀀스를 토토 핫시키려면 문자열 내의 어느 위치에서나 패턴은 다음으로 시작하고 끝나야 합니다. 퍼센트 기호.

문자열 없이 밑줄이나 퍼센트 기호를 토토 핫시키려면 다른 문자와 토토 핫, 해당 문자는패턴앞에 다음이 와야 합니다. 탈출 문자. 기본 이스케이프 문자는 백슬래시입니다. 하지만를 사용하여 다른 것을 선택할 수 있습니다.탈출절. 이스케이프 문자와 토토 핫시키려면 자체에는 두 개의 이스케이프 문자를 작성합니다.

백슬래시에는 이미 특별한 의미가 있다는 점에 유의하세요. 문자열 리터럴을 포함하는 패턴 상수를 작성하려면 백슬래시 SQL 문에 두 개의 백슬래시를 써야 합니다. (이스케이프 문자열 구문이 사용된다고 가정, 참조섹션 4.1.2.1). 따라서 실제로 토토 핫하는 패턴을 작성합니다. 리터럴 백슬래시는 4개의 백슬래시를 쓰는 것을 의미합니다. 성명. 다른 이스케이프를 선택하여 이를 방지할 수 있습니다. 문자 포함탈출; 그럼 백슬래시는 특별하지 않습니다.좋아요더 이상. (그러나 백슬래시는 여전히 문자열 리터럴에 특별합니다. 파서이므로 토토 핫하려면 여전히 두 개가 필요합니다. 백슬래시.)

글을 써서 이스케이프 문자를 선택하지 않는 것도 가능합니다이스케이프 ''. 이렇게 하면 효과적으로 비활성화됩니다. 탈출 메커니즘으로 인해 전원을 끌 수 없습니다. 밑줄과 퍼센트 기호의 특별한 의미 무늬.

핵심 단어좋아요사용 가능 대신에좋아요성냥을 만들기 위해 활성 로케일에 따라 대소문자를 구분하지 않습니다. 이것은 없습니다 그만큼SQL표준이지만 aPostgreSQL확장.

운영자~~다음과 동일함좋아요~~*다음에 해당함좋아요. 또한 있습니다!~~그리고!~~*연산자 그 표현은좋아하지 않음그리고닮지 않음입니다. 모두 이 연산자는PostgreSQL-특정.

9.7.2. 유사함정규 표현식

문자열유사함패턴 [탈출이스케이프 문자]
문자열다음과 유사하지 않음패턴 [탈출이스케이프 문자]

유사함연산자 패턴이 토토 핫하는지 여부에 따라 true 또는 false를 반환합니다. 주어진 문자열. 와 비슷합니다.좋아요, 단, 패턴을 해석하는 경우는 제외 SQL 표준의 정규식 정의를 사용합니다. SQL 정규식은 다음과 같은 흥미로운 교차점입니다.좋아요표기법 및 공통 정규식 표현 표기법.

좋아요좋아요, 그유사함연산자는 다음과 같은 경우에만 성공합니다. 패턴은 전체 문자열과 토토 핫합니다. 이건 일반적인 것과는 다르다 패턴이 무엇이든 토토 핫할 수 있는 정규식 동작 문자열의 일부. 또한 좋아요좋아요, 비슷한 것 에게사용_그리고%단일을 나타내는 와일드카드 문자로 문자 및 임의의 문자열(각각 다음과 유사함).그리고.*에 POSIX 정규 표현식).

빌린 시설 외에도좋아요, 비슷한 것 에게다음 패턴 토토 핫 메타 문자를 지원합니다 POSIX 정규식에서 빌려왔습니다:

  • |교체를 나타냅니다(둘 중 하나). 두 가지 대안 중).

  • *은 다음의 반복을 나타냅니다. 이전 항목이 0회 이상입니다.

  • +은 다음의 반복을 나타냅니다. 이전 항목을 한 번 이상.

  • ?은 다음의 반복을 나타냅니다. 이전 항목이 0번 또는 1번입니다.

  • {m}표시 이전 항목을 정확히 반복함m회.

  • {m,}표시 이전 항목의 반복m또는 그 이상.

  • {m,n}표시 적어도 이전 항목의 반복m최대n회.

  • 괄호()다음에 사용할 수 있습니다. 항목을 하나의 논리적 항목으로 그룹화합니다.

  • 괄호 표현식[...]POSIX 일반에서와 마찬가지로 문자 클래스를 지정합니다. 표현.

마침표(.)은(는) 에 대한 메타문자유사함.

다음과 같이좋아요, 백슬래시 이러한 메타 문자의 특별한 의미를 비활성화합니다. 또는 다른 이스케이프 문자를 지정할 수 있습니다.탈출.

몇 가지 예:

'abc'는 'abc'와 유사'abc' 'a'와 유사거짓'abc' '%(b|d)%'와 유사함'abc' '(b|c)%'와 유사함거짓

하위 문자열함수 세 개의 매개변수,하위 문자열(문자열from패턴for이스케이프 문자), 제공 SQL 정규식과 토토 핫하는 하위 문자열 추출 표현 패턴. 마찬가지로비슷한 것 에게, 지정된 패턴은 전체 데이터와 토토 핫해야 합니다. 그렇지 않으면 함수가 실패하고 null을 반환합니다. 에게 반환되어야 하는 패턴 부분을 나타냅니다. 성공하면 패턴에 이스케이프가 두 번 발생해야 합니다. 문자 뒤에 큰따옴표("). 패턴 부분과 토토 핫하는 텍스트 이 마커 사이가 반환됩니다.

몇 가지 예, 다음과 함께#"구분 반환 문자열:

하위 문자열('#'에 대해 '%#"o_b#"%'의 'foobar'))oob하위 문자열('#'에 대한 '#"o_b#"%'의 'foobar')NULL

9.7.3. POSIX정규 표현식

표 9-12POSIX를 사용하여 패턴 토토 핫에 사용 가능한 연산자를 나열합니다. 정규식.

표 9-12. 정규식 토토 핫 운영자

운영자 설명
~ 정규 표현식과 토토 핫, 대소문자 구분 '토마스' ~ '.*도마.*'
~* 정규 표현식과 토토 핫, 대소문자를 구분하지 않음 '토마스' ~* '.*도마.*'
!~ 정규 표현식과 토토 핫하지 않습니다. 대소문자 예민한 '토마스'!~ '.*도마.*'
!~* 정규 표현식과 토토 핫하지 않습니다. 대소문자 무감각 '토마스'!~* '.*바딤.*'

POSIX정규식 패턴 토토 핫를 위한 더 강력한 수단을 제공합니다.좋아요그리고유사함연산자. 다음과 같은 많은 Unix 도구이그레프, sed, 또는awk패턴 토토 핫 언어를 사용하세요 이는 여기에 설명된 것과 유사합니다.

정규 표현식은 다음과 같은 문자 시퀀스입니다. 문자열 집합의 축약된 정의(a일반 세트). 문자열은 다음과 토토 핫한다고 합니다. 정규 세트의 구성원인 경우 정규 표현식 정규식으로 설명됩니다. 마찬가지로좋아요, 패턴 문자가 문자열과 토토 핫합니다. 특수 문자가 아닌 이상 정확히 문자를 입력하세요. 정규식 언어 - 그러나 정규식은 와 다른 특수문자좋아요그렇습니다. 같지 않은좋아요패턴, 정규식은 다음과 같습니다. 일반 문자열이 아닌 한 문자열 내의 어느 위치에서나 토토 핫하는 것이 허용됩니다. 표현식이 명시적으로 시작 또는 끝에 고정되어 있습니다. 문자열.

일부 예:

'abc' ~ 'abc'사실'abc' ~ '^a''abc' ~ '(b|d)''abc' ~ '^(b|c)'거짓

POSIX패턴 언어는 아래에서 훨씬 더 자세히 설명됩니다.

하위 문자열함수 두 개의 매개변수,하위 문자열(문자열from패턴), 추출을 제공합니다. POSIX 정규식 패턴과 토토 핫하는 하위 문자열입니다. 그것 토토 핫하는 항목이 없으면 null을 반환하고, 그렇지 않으면 패턴과 토토 핫하는 텍스트입니다. 하지만 패턴에 어떤 내용이 포함되어 있으면 괄호, 첫 번째 항목과 토토 핫하는 텍스트 부분 괄호로 묶인 하위 표현식(왼쪽 괄호가 먼저 온다)가 반환됩니다. 주위에 괄호를 넣을 수 있습니다. 그 안에 괄호를 사용하려는 경우 전체 표현식 이 예외를 발생시키지 않고. 괄호가 필요한 경우 추출하려는 하위 표현식 앞의 패턴은 다음을 참조하세요. 아래에 설명된 비캡처 괄호입니다.

일부 예:

하위 문자열('o.b'의 'foobar')oobsubstring('o(.)b'의 'foobar')o

regexp_replace함수 토토 핫하는 하위 문자열에 대한 새 텍스트 대체 제공 POSIX 정규식 패턴. 구문은 다음과 같습니다.regexp_replace(출처, 패턴, 교체 [, 플래그]). 그만큼출처문자열은 다음과 같은 경우 변경되지 않고 반환됩니다. 다음과 토토 핫하는 항목이 없습니다.패턴. 토토 핫하는 것이 있으면,출처문자열이 다음과 같이 반환됩니다. 그만큼교체문자열 토토 핫하는 하위 문자열로 대체됩니다. 그만큼교체문자열은 다음을 포함할 수 있음\n, 여기서nis1통해9, 소스를 나타냅니다. 와 토토 핫하는 하위 문자열n번째 패턴의 괄호로 묶인 하위 표현식을 삽입해야 합니다. 그리고 그것은 다음을 포함할 수 있습니다\&표시하다 전체 패턴과 토토 핫하는 하위 문자열은 다음과 같아야 합니다. 삽입됨. 쓰다\\당신이 넣어야 할 경우 대체 텍스트의 리터럴 백슬래시. (언제나 그렇듯, 리터럴 상수로 작성된 이중 백슬래시를 기억하세요 이스케이프 문자열 구문이 사용된다고 가정합니다.) The플래그매개변수는 선택적 텍스트입니다. 변경되는 0개 이상의 단일 문자 플래그를 포함하는 문자열 함수의 동작. 깃발i대소문자를 구분하지 않는 토토 핫를 지정하고 플래그g각 토토 핫 항목의 교체를 지정합니다. 첫 번째 문자열이 아닌 하위 문자열입니다. 기타 지원되는 플래그 설명되어 있습니다.테이블 9-20.

일부 예:

regexp_replace('foobarbaz', 'b..', 'X')fooXbazregexp_replace('foobarbaz', 'b..', 'X', 'g')fooXXregexp_replace('foobarbaz', 'b(..)', E'X\\1Y', 'g')fooXarYXazY

regexp_matches함수 캡처된 모든 하위 문자열의 텍스트 배열을 반환합니다. POSIX 정규식 패턴 토토 핫로 인해 발생합니다. 그것 구문이 있습니다.regexp_matches(문자열, 패턴 [, 플래그]). 기능 행이 없거나, 한 행 또는 여러 행을 반환할 수 있습니다(g아래 플래그). 만약패턴토토 핫하지 않습니다. 기능은 행을 반환하지 않습니다. 패턴에 괄호가 포함되어 있지 않은 경우 하위 표현식이 있는 경우 반환된 각 행은 단일 요소 텍스트입니다. 전체 패턴과 토토 핫하는 하위 문자열을 포함하는 배열입니다. 만약에 패턴에 괄호로 묶인 하위 표현식이 포함되어 있는 경우, 함수 다음을 포함하는 텍스트 배열을 반환합니다.n번째 요소는와 토토 핫하는 하위 문자열입니다.n'번째 괄호로 묶인 하위 표현식 패턴(계산되지 않음)"비캡처"괄호; 아래를 참조하세요 세부). 그만큼플래그매개변수 0개 이상을 포함하는 선택적 텍스트 문자열입니다. 함수의 동작을 변경하는 단일 문자 플래그입니다. 깃발g함수가 각각을 찾도록 합니다. 첫 번째 문자열뿐만 아니라 문자열에서도 토토 핫하고 행을 반환합니다. 그러한 경기마다. 기타 지원되는 플래그는 다음에 설명되어 있습니다.테이블 9-20.

일부 예:

SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
 정규 표현식_토토 핫 
----------------
 바,베크

강제로 가능합니다regexp_matches()항상 한 행을 반환하려면 하위 선택 사용; 이는 특히 다음과 같은 경우에 유용합니다.선택모든 행을 원할 때 대상 목록 토토 핫하지 않는 항목이라도 반환됩니다.

SELECT col1, (SELECT regexp_matches(col2, '(bar)(beque)')) FROM 탭;

regexp_split_to_table함수는 POSIX 정규 표현식을 사용하여 문자열을 분할합니다 패턴을 구분 기호로 사용합니다. 구문은 다음과 같습니다.regexp_split_to_table(문자열, 패턴 [, 플래그]). 없는 경우 와 토토 핫패턴, 함수는를 반환합니다.문자열. 만약에 토토 핫하는 항목이 하나 이상 있습니다. 각 토토 핫 항목에 대해 텍스트를 반환합니다. 마지막 토토 핫의 끝(또는 문자열의 시작)부터 경기 시작까지. 더 이상 경기가 없을 때, 마지막 토토 핫의 끝부터 끝까지 텍스트를 반환합니다. 문자열의. 그만큼플래그매개변수는 0개 이상을 포함하는 선택적 텍스트 문자열입니다. 함수의 동작을 변경하는 단일 문자 플래그입니다.regexp_split_to_table지원하다 설명된 플래그는테이블 9-20.

regexp_split_to_array함수는 다음과 동일하게 동작합니다regexp_split_to_table, 그 외에는regexp_split_to_array반환합니다 결과는 다음의 배열로 나타납니다.텍스트. 그것은 통사론regexp_split_to_array(문자열, 패턴 [, 플래그]). 매개변수 와 동일합니다regexp_split_to_table.

일부 예:

SELECT foo FROM regexp_split_to_table('빠른 갈색 여우가 게으른 개를 뛰어넘었습니다', E'\\s+') AS foo;
  푸   
--------
 그만큼    
 빠른  
 갈색  
 여우    
 뛰어 올랐다 
 ~ 위에   
 그만큼    
 게으른   
 개    
(9열)

SELECT regexp_split_to_array('빠른 갈색 여우가 게으른 개를 뛰어넘었습니다', E'\\s+');
              regexp_split_to_array             
------------------------------------------------
 the,quick,brown,fox,jumped,over,the,lazy,dog

마지막 예에서 볼 수 있듯이 정규식 분할 함수는 시작이나 끝에서 발생하는 길이가 0인 토토 핫를 무시합니다. 문자열 또는 이전 토토 핫 항목 직후. 이것은 정규 표현식 토토 핫의 엄격한 정의와는 반대로 에 의해 구현됨regexp_matches, 그러나 실제로는 일반적으로 가장 편리한 동작입니다. 다른 Perl과 같은 소프트웨어 시스템은 유사한 정의를 사용합니다.

9.7.3.1. 정규식 세부

PostgreSQL의 정규병 표현식은 작성된 소프트웨어 패키지를 사용하여 구현됩니다. 헨리 스펜서. 레귤러에 대한 설명이 많다. 아래 표현은 그의 매뉴얼에서 그대로 복사되었습니다.

정규식 (REs), 정의된 대로POSIX1003.2, 두 가지 형식으로 제공됩니다.확장 REs 또는EREs (대략이그레프) 및기본 REs 또는BREs (대략ed). PostgreSQL두 가지 형식을 모두 지원하며 또한 POSIX에 없는 일부 확장을 구현합니다. 표준이지만 다음과 같은 이유로 널리 사용되었습니다. Perl 및 Tcl과 같은 프로그래밍 언어에서 사용 가능합니다.REs는 POSIX가 아닌 것을 사용하고 있습니다 확장이 호출됩니다.고급 REs 또는ARE이 문서에 있습니다. ARE는 ERE의 거의 정확한 상위 집합이지만 BRE에는 몇 가지 표기법의 비호환성(또한 훨씬 더 제한된). 먼저 ARE 및 ERE 형식을 설명합니다. ARE에만 적용되는 기능을 설명하고 BRE가 어떻게 작동하는지 설명합니다. 다르다.

참고: PostgreSQL항상 처음에는 가정합니다 정규 표현식은 ARE 규칙을 따릅니다. 하지만, 더 제한된 ERE 또는 BRE 규칙을 선택할 수 있습니다. 앞에 를 추가함내장 옵션에 RE 패턴(에 설명된 대로)섹션 9.7.3.4. 이는 다음과의 호환성에 유용할 수 있습니다. 정확히 기대하는 애플리케이션POSIX1003.2 규칙.

정규 표현식은 하나 이상으로 정의됩니다.분기, 구분|. 다음 중 하나와 토토 핫하는 항목과 토토 핫합니다. 가지.

분기가 0 이상입니다.정량화됨 원자또는제약조건, 연결되었습니다. 첫 번째 토토 핫 항목과 토토 핫하고 그 다음에는 토토 핫 항목이 토토 핫합니다. 두 번째 경기 등 빈 가지가 빈 가지와 토토 핫합니다. 끈.

정량화된 원자는원자아마도 단일이 올 수 있음수량자. 수량자가 없으면 토토 핫합니다. 원자와 토토 핫합니다. 수량자를 사용하면 일부와 토토 핫할 수 있습니다. 원자의 토토 핫 수입니다. 안원자다음에 표시된 가능성 중 하나일 수 있습니다.테이블 9-13. 가능한 수량자와 그 의미는 다음과 같습니다. 에 표시됨테이블 9-14.

A 제약비어 있는 것과 토토 핫합니다. 문자열이지만 특정 조건이 충족되는 경우에만 토토 핫합니다. 에이 제약 조건은 원자를 사용할 수 있는 곳에서 사용할 수 있습니다. 뒤에는 수량자가 올 수 없습니다. 간단한 제약 에 표시됩니다.테이블 9-15; 몇 가지 추가 제약 조건은 나중에 설명됩니다.

표 9-13. 정규식 원자

아톰 설명
(다시) (어디에서다시아무거나 정규 표현식)은 다음과 토토 핫합니다.다시, 다음과 같은 토토 핫 항목이 있음 가능한 보고
(?:) 위와 같지만 토토 핫 항목은 다음과 같이 기록되지 않습니다. 보고(a"비캡처"괄호 세트) (ARE에만 해당)
. 모든 단일 문자와 토토 핫
[문자] a 괄호 표현식, 다음 중 하나와 토토 핫함문자(참조섹션 9.7.3.2자세한 내용은)
\k (어디에서k은 영숫자가 아닌 문자)가 해당 문자와 ​​토토 핫합니다. 일반 문자로 간주됩니다. 예:\\백슬래시 문자와 토토 핫
\c 어디에서c이다 영숫자(다른 문자가 뒤따를 수도 있음) 는탈출, 참조섹션 9.7.3.3(ARE 전용; ERE 및 BRE에서는 이 성냥c)
{ 뒤에 숫자 이외의 문자가 올 경우, 왼쪽 중괄호 문자와 토토 핫합니다.{; 뒤에 숫자가 오면, a의 시작바운드(아래 참조)
x 어디에서x은 다른 의미가 없는 단일 문자, 토토 핫 그 캐릭터

RE는 다음으로 끝날 수 없습니다.\.

참고:백슬래시(\)은 이미에서 특별한 의미를 갖습니다.포스트그레SQL문자열 리터럴. 다음을 포함하는 패턴 상수를 작성하려면 백슬래시를 사용하려면 두 개의 백슬래시를 써야 합니다. 명령문, 이스케이프 문자열 구문이 사용된다고 가정합니다(참조섹션 4.1.2.1).

표 9-14. 정규식 수량자

정량자 토토 핫
* 원자와 토토 핫하는 0개 이상의 시퀀스
+ 1개 이상의 원자 토토 핫 시퀀스
? 원자 토토 핫 항목 0 또는 1의 시퀀스
{m} 정확히 일련의m원자 토토 핫
{m,} 일련의m또는 그 이상의 원자 토토 핫
{m,n} 일련의m통해n(포함) 원자 토토 핫;m초과할 수 없습니다n
*? 탐욕스럽지 않은 버전*
+? 탐욕스럽지 않은 버전+
?? 탐욕스럽지 않은 버전?
{m}? 탐욕스럽지 않은 버전{m}
{m,}? 탐욕스럽지 않은 버전{m,}
{m,n}? 탐욕스럽지 않은 버전{m,n}

다음을 사용하는 양식{...}알려져 있어요 처럼경계. 숫자m그리고n범위 내에는 허용되는 부호 없는 십진 정수가 있습니다. 0부터 255까지의 값입니다.

탐욕스럽지 않음수량자(사용 가능) ARE에서만) 해당 가능성과 동일한 가능성이 토토 핫합니다. 해당 법선(탐욕스러운) 대응하지만, 숫자보다는 가장 작은 숫자를 선호합니다. 토토 핫 횟수가 가장 많습니다. 보다섹션 9.7.3.5자세한 내용은.

참고:수량자는 즉시 따를 수 없습니다 다른 수량자, 예:**이다 유효하지 않은. 수량자는 표현식을 시작할 수 없습니다. 하위 표현 또는 따르기^또는|.

표 9-15. 정규식 제약

제약 설명
^ 문자열의 시작 부분과 토토 핫
$ 문자열 끝에서 토토 핫
(?=다시) 긍정적인 예측하위 문자열이 토토 핫하는 모든 지점에서 토토 핫합니다.다시시작합니다(ARE 오직)
(?!다시) 부정적 예측토토 핫하는 하위 문자열이 없는 모든 지점에서 토토 핫합니다.시작합니다(ARE 오직)

예측 제약 조건은 다음을 포함할 수 없습니다.역참조(참조섹션 9.7.3.3), 그 안의 모든 괄호가 고려됩니다. 비캡처.

9.7.3.2. 까치발 표현식

A 괄호 표현식다음 목록입니다. 안에 포함된 문자[]. 그것 일반적으로 목록의 단일 문자와 토토 핫합니다(그러나 아래에). 목록이로 시작하는 경우^, 단일 문자와 토토 핫합니다.아님나머지 목록에서. 목록의 두 문자가로 구분된 경우-, 이는 전체 범위에 대한 약어입니다. 조합에서 해당 두 문자(포함) 사이의 문자 시퀀스(예:[0-9]inASCII모든 소수점과 토토 핫 손가락. 두 범위가 끝점을 공유하는 것은 불법입니다. 예를 들어,a-c-e. 범위는 매우 조합 순서에 따라 다르므로 이식 가능한 프로그램은 그들에게 의존하지 마십시오.

리터럴을 포함하려면]에 목록에서 첫 번째 문자로 만듭니다(다음 문자)^(사용되는 경우)). 리터럴을 포함하려면-, 첫 번째 또는 마지막으로 만드세요 문자 또는 범위의 두 번째 끝점입니다. 사용하려면 오자-의 첫 번째 끝점으로 범위로 묶으세요.[.그리고.]조합 요소로 만들기 (아래 참조). 해당 캐릭터를 제외한 일부 캐릭터는 다음을 사용하는 조합[(다음 참조 단락) 및 이스케이프(ARE에만 해당), 기타 모든 특수 문자는 대괄호 내에서 특별한 의미를 잃습니다. 표현. 특히,\아님 ERE 또는 BRE 규칙을 따를 때 특별하지만 특별합니다. (이스케이프 도입으로) ARE에서.

대괄호 표현식 내에서 조합 요소(a 문자, 마치 다음과 같이 조합되는 여러 문자 시퀀스 단일 문자이거나 조합 시퀀스 이름이었습니다. 둘 중 하나) 안에 포함됨[.그리고.]다음의 순서를 나타냅니다. 해당 조합 요소의 문자입니다. 순서대로 처리됩니다 대괄호 표현식 목록의 단일 요소로 사용됩니다. 이것 여러 문자를 포함하는 대괄호 표현식을 허용합니다. 두 개 이상의 문자와 토토 핫하는 조합 요소(예: if) 조합 순서에는 다음이 포함됩니다.ch조합 요소, 그 다음 RE[[.ch.]]*c처음 5개 문자와 토토 핫 의chchcc.

참고: 포스트그레SQL현재는 그렇지 않습니다 다중 문자 조합 요소를 지원합니다. 이것 정보는 가능한 미래 행동을 설명합니다.

대괄호 표현식 내에서 조합 요소가 포함되어 있습니다. 안에[=그리고=]동등 수업, 모든 문자의 시퀀스를 나타냅니다. 자신을 포함하여 해당 요소와 동등한 요소를 대조합니다. (다른 동등한 조합 요소가 없는 경우, 처리는 둘러싸는 구분 기호가 다음과 같습니다.[.그리고.].) 예를 들어, 만약o그리고^동등한 클래스의 구성원입니다. 그 다음에[[=o=]], [[=^=]][o^]있습니다 모두 동의어. 동등 클래스는 다음의 엔드포인트가 될 수 없습니다. 범위.

괄호 표현식 내에서 문자 클래스의 이름 에 포함됨[:그리고:]모든 문자 목록을 나타냅니다. 그 클래스에 속합니다. 표준 문자 클래스 이름은 다음과 같습니다.알넘, 알파, 공백, 컨트롤, 자리, 그래프, 하위, 인쇄, 점점, 공간, 상위, xdigit. 이것들 에 정의된 문자 클래스를 나타냅니다.ctype. 로캘은 다음을 수행할 수 있습니다. 다른 사람에게 제공합니다. 문자 클래스는 다음과 같이 사용할 수 없습니다. 범위의 끝점입니다.

괄호 표현식에는 두 가지 특별한 경우가 있습니다: 대괄호 표현식[[:<:]]그리고[[::]]제약조건, 토토 핫 단어의 시작과 끝 부분에 빈 문자열 각기. 단어는 일련의 단어로 정의됩니다. 단어 앞에도 뒤에도 오지 않는 문자 문자. 단어 문자는알넘문자(에 의해 정의됨)ctype) 또는 밑줄. 이것은 확장 프로그램이며 호환되지만 지정되지는 않습니다.POSIX1003.2, 그리고 해야 이식 가능한 소프트웨어에서는 주의해서 사용해야 합니다. 다른 시스템. 아래에 설명된 제약 조건 이스케이프는 다음과 같습니다. 일반적으로 바람직합니다. 더 이상 표준이 아니지만 더 쉽습니다. 입력합니다.

9.7.3.3. 정규식 탈출

탈출특수 시퀀스입니다. 로 시작하는\뒤에 영숫자 문자. 이스케이프에는 여러 종류가 있습니다. 문자 입력, 클래스 속기, 제약 조건 이스케이프 및 역참조. 에이\뒤에 영숫자 문자이지만 유효한 이스케이프를 구성하지 않는 것은 ARE에서는 불법입니다. ERE에는 탈출구가 없습니다. 대괄호 표현식, a\뒤에 영숫자 문자는 해당 문자를 나타냅니다. 일반 문자 및 대괄호 표현식 안에\은 일반 문자입니다. (그만큼 후자는 ERE와 ERE 간의 실제 비호환성 중 하나입니다. ARE.)

문자 입력 이스케이프존재합니다 인쇄되지 않는 항목 및 기타 불편한 사항을 쉽게 지정할 수 있도록 합니다. RE의 문자. 그들은에 표시됩니다표 9-16.

클래스 속기 이스케이프제공 일반적으로 사용되는 특정 문자 클래스에 대한 약칭입니다. 그들 에 표시됩니다.표 9-17.

A 제약조건 탈출은 제약 조건, 특정 조건이 있는 경우 빈 문자열과 토토 핫 만나서 탈출구로 쓰여졌습니다. 그들은에 표시됩니다테이블 9-18.

A 뒤로 참조 (\n) 토토 핫 이전 괄호와 토토 핫하는 동일한 문자열 숫자로 지정된 하위 표현식n(참조테이블 9-19). 예를 들어,([bc])\1토토 핫bb또는cc하지만 아님bc또는cb. 하위 표현식은 완전히 RE에서 역참조 앞에 옵니다. 하위 표현식은 다음과 같습니다. 앞의 괄호 순서대로 번호가 매겨집니다. 비캡처 괄호는 하위 표현식을 정의하지 않습니다.

참고:탈출이 이어진다는 점을 명심하세요\다음 경우에는 두 배로 늘려야 합니다. 패턴을 SQL 문자열 상수로 입력합니다. 을 위한 예:

'123' ~ E'^\\d3'

표 9-16. 정규식 문자 입력 이스케이프

탈출 설명
\a 경고(벨) 문자, C에서와 같음
\b 백스페이스, C에서와 같이
\B 백슬래시의 동의어(\)의 필요성을 줄이는 데 도움이 됩니다. 백슬래시 이중화
\cX (어디에서X아무거나 문자) 하위 5비트가 다음과 같은 문자 의 그것과 동일X, 기타 비트는 모두 영
\e 조합 순서 이름이 다음과 같은 문자ESC, 그렇지 않으면 8진수 값을 갖는 문자033
\f C에서와 같은 양식 피드
\n C에서와 같이 개행
\r C에서와 같은 캐리지 리턴
\t C에서와 같은 수평 탭
\uwxyz (어디에서wxyz이다 정확히 4개의 16진수 숫자) 16진수 값은0xwxyz
\Ustuvwxyz (어디에서stuvwxyz정확히 8자리 16진수) 문자 16진수 값은 다음과 같습니다.0xstuvwxyz
\v C와 같은 수직 탭
\x흐흐 (어디에서흐흐흐임의의 것 16진수 시퀀스) 해당 문자 16진수 값은0x흐흐흐(16진수 개수에 관계없이 단일 문자 숫자가 사용됩니다)
\0 값이 다음과 같은 문자0(널 바이트)
\xy (어디에서xy이다 정확히 두 개의 8진수이며 a가 아닙니다.뒤로 참조) 8진수 값은0xy
\xyz (어디에서xyz이다 정확히 3개의 8진수이며 a가 아닙니다.뒤로 참조) 8진수 값은0xyz

16진수는0-9, a-fA-F. 8진수는 다음과 같습니다.0-7.

숫자 문자 입력은 외부 값을 지정하여 이스케이프됩니다. ASCII 범위(0-127)는 다음에 따라 의미가 있습니다. 데이터베이스 인코딩. 인코딩이 utf-8인 경우 이스케이프 값 예를 들어 유니코드 코드 포인트와 동일합니다.\u1234문자를 의미합니다U+1234. 다른 멀티바이트 인코딩의 경우 문자 입력 이스케이프는 일반적으로 다음을 지정합니다. 문자의 바이트 값을 연결합니다. 만약 이스케이프 값은 다음의 유효한 문자와 토토 핫하지 않습니다. 데이터베이스 인코딩에서는 오류가 발생하지 않지만 어떤 데이터와도 토토 핫하지 않습니다.

문자 입력 이스케이프는 항상 일반으로 간주됩니다 문자. 예를 들어,\135is]ASCII이지만\135괄호를 종료하지 않습니다. 표현.

표 9-17. 정규식 클래스 속기 이스케이프

탈출 설명
\d [[:숫자:]]
\s [[:space:]]
\w [[:alnum:]_](참고 밑줄이 포함되어 있습니다)
\D [^[:숫자:]]
\S [^[:space:]]
\W [^[:alnum:]_](참고 밑줄이 포함되어 있습니다)

괄호 표현식 내에서,\d, \s\w바깥쪽 괄호를 잃어버리고\D, \S\W불법입니다. (예를 들어,[a-c\d]다음과 동일함[a-c[:digit:]]. 또한,[a-c\D], 이는와 동일합니다.[a-c^[:숫자:]], 불법입니다.)

표 9-18. 정규식 제약 탈출

탈출 설명
\A 문자열의 시작 부분에서만 토토 핫합니다(참조섹션 9.7.3.5이것이 다음과 어떻게 다른지^)
\m 단어의 시작 부분에서만 토토 핫
\M 단어 끝에서만 토토 핫합니다.
\y 의 시작이나 끝에서만 토토 핫합니다. 단어
\Y 시작이 아닌 지점에서만 토토 핫합니다. 또는 단어의 끝
\Z 문자열 끝에서만 토토 핫합니다(참조섹션 9.7.3.5이것이 다음과 어떻게 다른지$)

단어는 다음의 사양에 정의되어 있습니다.[[:<:]]그리고[[::]]위. 제약조건 탈출은 대괄호 표현식 내에서는 불법입니다.

표 9-19. 정규식 뒤로 참고자료

탈출 설명
\m (어디에서m은 0이 아닌 숫자)에 대한 역참조m'번째 하위 표현식
\mnn (어디에서m은 0이 아닌 숫자 및nn자릿수가 더 많고 십진수 값입니다mnn다음보다 크지 않습니다. 지금까지 본 닫는 캡처 괄호의 수) 에 대한 역참조mnn'번째 하위 표현식

참고:사이에는 본질적인 모호함이 있습니다. 8진수 문자 입력 이스케이프 및 역참조 힌트와 같이 다음 휴리스틱에 의해 해결됩니다. 위에. 선행 0은 항상 8진수 이스케이프를 나타냅니다. 에이 0이 아닌 단일 숫자, 뒤에 다른 숫자가 없음 항상 역참조로 사용됩니다. 여러 자리 시퀀스 0으로 시작하지 않는 것은 역참조로 간주됩니다. 적절한 하위 표현식 뒤에 옵니다(즉, 숫자 역참조의 법적 범위에 있음) 그렇지 않으면 8진수로 간주됩니다.

9.7.3.4. 정규식 메타 구문

위에 설명된 기본 구문 외에도 다음이 있습니다. 일부 특수 형식 및 기타 구문 기능 사용 가능.

RE는 두 가지 특수 문자 중 하나로 시작할 수 있습니다.감독접두사. RE가로 시작하는 경우***:, 나머지 RE는 다음과 같이 사용됩니다. ARE. (이것은 일반적으로 효과가 없습니다.포스트그레SQL, RE는 다음과 같은 것으로 가정되므로 ARE; 그러나 ERE 또는 BRE 모드가 활성화된 경우에는 효과가 있습니다. 에 의해 지정됨플래그정규식 함수에 대한 매개변수입니다.) RE가 다음으로 시작하는 경우***=, 나머지 RE는 다음 위치로 이동됩니다. 모든 문자가 일반 문자로 간주되는 리터럴 문자열이어야 합니다. 문자.

ARE는 다음으로 시작할 수 있습니다.내장됨 옵션: 시퀀스(?xyz)(어디에서xyz하나 이상의 알파벳입니다. 문자)는 RE의 나머지 부분에 영향을 미치는 옵션을 지정합니다. 이러한 옵션은 이전에 결정된 옵션보다 우선합니다. 특히 대소문자 구분 동작을 재정의할 수 있습니다. 정규식 연산자 또는플래그매개변수를 정규식 함수에 추가합니다. 사용 가능한 옵션 문자는 다음과 같습니다.테이블 9-20. 동일한 옵션 문자가에 사용됩니다.플래그정규식 매개변수 기능.

표 9-20. 임베디드 옵션 문자입니다

옵션 설명
b RE의 나머지 부분은 BRE입니다.
c 대소문자 구분 토토 핫(연산자 재정의) 유형)
e RE의 나머지 부분은 ERE입니다.
i 대소문자를 구분하지 않는 토토 핫(참조섹션 9.7.3.5) (연산자 유형 재정의)
m 역사적 동의어n
n 줄바꿈 구분 토토 핫(참조섹션 9.7.3.5)
p 부분 개행 인식 토토 핫(참조섹션 9.7.3.5)
q RE의 나머지 부분은 리터럴입니다("인용됨") 문자열, 모두 일반 문자
s 줄바꿈을 구분하지 않는 토토 핫(기본값)
t 엄격한 구문(기본값, 아래 참조)
w 역 부분 개행 구분("이상하다") 토토 핫(참조섹션 9.7.3.5)
x 확장된 구문(아래 참조)

내장된 옵션은 다음에서 적용됩니다.)시퀀스를 종료합니다. 나타날 수 있습니다 ARE 시작 시에만(다음 이후에)***:감독이 있는 경우).

일반적인 것 외에도 (단단한) 모든 문자가 중요한 RE 구문에는 다음이 있습니다. an확장구문, 사용 가능 임베디드 지정x옵션. ~ 안에 확장된 구문, RE의 공백 문자는 다음과 같습니다. a 사이의 모든 문자와 마찬가지로 무시됩니다.#그리고 다음 개행 문자(또는 답장). 이를 통해 복잡한 RE에 단락을 지정하고 주석을 달 수 있습니다. 해당 기본 규칙에는 세 가지 예외가 있습니다.

  • 공백 문자 또는#앞에\보존됨

  • 공백 또는#이내 대괄호 표현식이 유지됩니다.

  • 공백과 주석은 안에 나타날 수 없습니다. 여러 문자 기호(예:)(?:

이 목적을 위해 공백 문자는 공백, 탭, 개행 및 다음 문자에 속하는 모든 문자공간문자 클래스.

마지막으로 ARE 외부 대괄호 표현식에서 순서(?#ttt)(어디에서ttt텍스트가 아닌 것은 무엇입니까? 를 포함하는))은 주석입니다. 완전히 무시됩니다. 다시 말하지만, 이는 다음 사이에는 허용되지 않습니다. 여러 문자 기호의 문자(예:)(?:. 이런 댓글은 좀 더 역사적이다. 유용한 시설보다 인공물이 더 이상 사용되지 않습니다. 대신 확장된 구문을 사용하세요.

없음이들 중 초기 구문인 경우 메타구문 확장을 사용할 수 있습니다.***=감독이 사용자의 입력은 문자열이 아닌 리터럴 문자열로 처리됩니다. 답장.

9.7.3.5. 정규식 토토 핫 규칙

RE가 둘 이상 토토 핫할 수 있는 경우 주어진 문자열의 하위 문자열, RE는 시작하는 문자열과 토토 핫합니다. 문자열에서 가장 먼저. RE가 둘 이상 토토 핫할 수 있는 경우 해당 지점에서 시작하는 하위 문자열(가능한 가장 긴 문자열) 토토 핫하는 항목 또는 가능한 가장 짧은 토토 핫 항목이 선택됩니다. RE가 다음과 같은지 여부탐욕스러운또는탐욕스럽지 않음.

RE가 탐욕스러운지 아닌지는 다음에 의해 결정됩니다. 다음 규칙:

  • 대부분의 원자와 모든 제약은 탐욕이 없습니다. 속성(변수의 양을 토토 핫시킬 수 없기 때문에 어쨌든 문자 메시지를 보내세요).

  • RE 주위에 괄호를 추가해도 RE는 변경되지 않습니다. 탐욕.

  • 고정 반복 수량자를 사용하여 수량화된 원자 ({m}또는{m}?)는 원자와 동일한 탐욕(아마도 없음) 그 자체.

  • 다른 일반 수량자를 사용하여 수량화된 원자 (포함{m,n}함께m같음n)은 탐욕스럽습니다(가장 긴 것을 선호함) 성냥).

  • 탐욕스럽지 않은 수량자를 사용하는 수량화된 원자 (포함{m,n}?함께m같음n)은 욕심이 없습니다(가장 짧은 것을 선호함) 성냥).

  • 브랜치 — 즉, 최상위 레벨이 없는 RE|연산자 — 동일 탐욕은 그 안에 있는 최초의 정량화된 원자입니다. 탐욕 속성.

  • 다음으로 연결된 두 개 이상의 분기로 구성된 RE 그만큼|연산자는 항상 탐욕스러운.

위의 규칙은 탐욕 속성뿐만 아니라 개별적으로 정량화된 원자가 있지만 가지와 정량화된 원자를 포함하는 전체 RE. 그게 무슨 뜻인지는 토토 핫는 분기가 수행되는 방식으로 수행됩니다. 전체 RE, 가능한 가장 길거나 가장 짧은 하위 문자열과 토토 핫전체적으로. 한 번 전체 경기의 길이가 결정됩니다. 특정 하위 표현식과 토토 핫하는 항목은 다음에서 결정됩니다. 해당 하위 표현의 탐욕 속성의 기초, RE 복용에서 더 일찍 시작하는 하위 표현 나중에 시작하는 것보다 우선순위가 높습니다.

이것이 무엇을 의미하는지에 대한 예:

SUBSTRING 선택('XY1234Z', 'Y*([0-9]1,3)');결과:123SUBSTRING 선택('XY1234Z', 'Y*?([0-9]1,3)');결과:1

첫 번째 경우에는 RE 전체가 탐욕스럽습니다. 왜냐하면Y*탐욕스럽습니다. 시작과 토토 핫할 수 있습니다. 에Y, 가장 긴 것과 토토 핫합니다. 거기에서 시작하는 가능한 문자열, 즉,Y123. 출력은 괄호 안에 있는 부분입니다. 그거 아니면123. 두 번째 경우에는 RE 전체는 탐욕스럽지 않습니다. 왜냐하면예*?탐욕스럽지 않습니다. 시작부터 토토 핫할 수 있습니다. 그만큼Y, 가장 짧은 것과 토토 핫합니다. 거기에서 시작하는 가능한 문자열, 즉,Y1. 하위 표현식[0-9]{1,3}탐욕스럽기는 하지만 변경할 수는 없습니다. 전체 경기 시간에 대한 결정; 그래서 강제로 그냥 토토 핫1.

요컨대, RE에 탐욕스러운 것과 탐욕스럽지 않은 것이 모두 포함된 경우 하위 표현식의 경우 총 토토 핫 길이는 다음 중 하나입니다. 속성에 따라 가능하거나 최대한 짧음 전체 RE에 할당됩니다. 에 할당된 속성은 하위 표현식은 토토 핫하는 정도에만 영향을 미칩니다. 허용됨"먹으세요"각각에 상대적 다른.

수량자{1,1}그리고{1,1}?강제로 사용할 수 있습니다. 욕심이 많든, 탐욕이 없든 각각 하위 표현식 또는 전체 RE. 필요할 때 유용합니다. RE 전체가 기존 RE와는 다른 탐욕 속성을 갖습니다. 그 요소로부터 추론됩니다. 예를 들어, 우리가 일부 숫자가 포함된 문자열을 숫자와 그 앞과 뒤의 부분. 우리는 노력할 수도 있습니다 이렇게 하세요:

SELECT regexp_matches('abc01234xyz', '(.*)(\d+)(.*)');결과:abc0123,4,xyz

그것은 작동하지 않았습니다: 첫 번째.*이다 욕심이 많군요"먹는다"그만큼 할 수 있습니다.\d+에 토토 핫시키다 가능한 마지막 자리, 마지막 숫자. 우리는 그 문제를 해결하려고 노력할 수도 있습니다 탐욕스럽지 않게 만들어서:

SELECT regexp_matches('abc01234xyz', '(.*?)(\d+)(.*)');결과:abc,0,""

그것도 작동하지 않았습니다. 이제 RE 전체가 욕심이 없기 때문에 전체 경기가 즉시 종료됩니다. 가능한. RE를 강제로 사용하여 원하는 것을 얻을 수 있습니다. 탐욕스러워서 전체 :

SELECT regexp_matches('abc01234xyz', '(?:(.*?)(\d+)(.*))1,1');결과:abc,01234,xyz

RE의 전반적인 탐욕을 다음과 별도로 제어합니다. 그 구성 요소의 탐욕은 큰 유연성을 허용합니다. 가변 길이 패턴을 처리합니다.

더 길거나 짧은 토토 핫 항목을 결정할 때 토토 핫 길이는 조합 요소가 아닌 문자 단위로 측정됩니다. 빈 문자열은 전혀 토토 핫하지 않는 것보다 긴 것으로 간주됩니다. 예를 들어:bb*3개와 토토 핫 의 중간 문자abbbc; (주|월)(밤|기사)토토 핫 10자 모두주중; 언제(.*).*다음과 토토 핫함abc괄호로 묶인 하위 표현 세 문자 모두와 토토 핫합니다. 그리고 언제(a*)*다음과 토토 핫함bc전체 RE와 괄호 안에 있는 항목 모두 하위 표현식은 빈 문자열과 토토 핫합니다.

대소문자 독립적 토토 핫가 지정되면 효과는 다음과 같습니다. 마치 모든 경우의 구별이 사라진 것처럼. 알파벳. 여러 경우에 존재하는 알파벳인 경우 대괄호 밖에서는 일반 문자로 나타납니다. 표현식은 효과적으로 대괄호로 변환됩니다. 두 가지 경우를 모두 포함하는 표현식(예:x되다[xX]. 언제 대괄호 표현식 안에 나타납니다. 모든 경우 대응 그 중 괄호 표현식에 추가됩니다(예:[x]되다[xX]그리고[^x]되다[^xX].

줄바꿈 구분 토토 핫가 지정된 경우,.및 대괄호 표현식 사용^절대 개행 문자와 토토 핫하지 않습니다(그래서 RE가 아닌 이상 토토 핫하는 항목은 개행을 넘지 않습니다. 명시적으로 배열) 및^그리고$뒤의 빈 문자열과 토토 핫합니다. 및 개행 이전에 각각 토토 핫하는 것 외에도 각각 문자열의 시작과 끝입니다. 그러나 ARE는 탈출합니다.\A그리고\Z문자열의 시작 또는 끝과 계속 토토 핫.

부분 개행 구분 토토 핫가 지정되면 이것은 영향을 미친다.및 대괄호 표현식 개행을 구분하는 토토 핫를 사용하지만 그렇지 않음^그리고$.

역 부분 개행 구분 토토 핫가 지정하면 영향을 받습니다.^그리고$개행 구분과 마찬가지로 토토 핫하지만 그렇지 않음.및 브래킷 표현. 이것은 그다지 유용하지는 않지만 다음을 위해 제공됩니다. 대칭.

9.7.3.6. 한도 및 호환성

RE 길이에는 특별한 제한이 없습니다. 이 구현. 그러나 고도로 의도된 프로그램은 Portable은 256바이트보다 긴 RE를 사용해서는 안 됩니다. POSIX 호환 구현은 이러한 승인을 거부할 수 있습니다. RE.

실제로 호환되지 않는 ARE의 유일한 기능 POSIX ERE를 사용하면 다음과 같습니다.\하지 않습니다 대괄호 표현식 내에서는 특별한 의미를 잃습니다. 모두 다른 ARE 기능은 불법이거나 다음과 같은 구문을 사용합니다. POSIX ERE에서 정의되지 않거나 지정되지 않은 효과 그만큼***이사 구문도 마찬가지로 BRE 및 ERE 모두에 대한 POSIX 구문 외부.

많은 ARE 확장은 Perl에서 차용되었지만 일부는 정리하기 위해 변경되었으며 일부 Perl은 확장자가 없습니다. 주의할 점은 다음과 같습니다.\b, \B, 후행 개행 문자에 대한 특별한 처리가 부족합니다. 사물에 보완된 대괄호 표현식 추가 개행 구분 토토 핫의 영향을 받으며, 예견 제약 조건의 괄호 및 역참조 가장 긴/최단 토토 핫(첫 번째 토토 핫가 아닌) 토토 핫 의미론.

ARE와 ARE 사이에는 두 가지 심각한 비호환성이 존재합니다. 7.4 이전 릴리스에서 인식되는 ERE 구문포스트그레SQL:

  • ARE에서는,\뒤에 영숫자 문자는 이스케이프 또는 오류입니다. 이전 릴리스에서는 이는 단지 영숫자 쓰기. 이것은 그다지 큰 일이 되어서는 안 됩니다. 문제는 그런 글을 쓸 이유가 없었기 때문이다. 이전 릴리스의 순서입니다.

  • ARE에서는,\특별한 것으로 남아있습니다 문자[]그래서 오자\괄호 안에 표현을 써야 합니다\\.

9.7.3.7. 기본 레귤러 표현식

BRE는 여러 측면에서 ERE와 다릅니다. BRE에서는|, +?일반 문자이고 거기에 해당 기능과 동일하지 않습니다. 구분 기호 경계는\{그리고\}, 와{그리고}그 자체로는 평범한 문자입니다. 중첩된 하위 표현식의 괄호는 다음과 같습니다.\(그리고\), 와(그리고)작성자 그 자체로는 평범한 캐릭터입니다.^이다 RE의 시작 부분을 제외한 일반 문자 또는 괄호로 묶인 하위 표현식의 시작,$끝을 제외하고는 일반 문자입니다. RE 또는 괄호로 묶인 하위 표현식의 끝, 및*다음과 같은 경우 일반 문자입니다. RE의 시작 부분이나 시작 부분에 나타납니다. 괄호로 묶인 하위 표현식(가능한 선행 뒤에^). 마지막으로 한 자릿수 뒤로 참조가 가능하며,\<그리고\다음의 동의어입니다[[:<:]]그리고[[::]]각각; 다른 탈출구는 없습니다 BRE에서 사용 가능합니다.