개발 버전 :Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.7. 패턴 매칭

패턴 매칭에 대한 세 가지 별도의 접근 방식이 있습니다PostgreSQL: theSQL Like운영자, 더 최근유사연산자 (SQL : 1999에 추가) 및posix-스타일 규칙"이렇게합니다운영자, 함수는입니다

팁 :패턴 스포츠 토토 결과 요구가있는 경우

주의

대부분의 정규 표현력 검색을 실행할 수 있습니다

사용 검색유사합니다패턴은 동일한 보안 위험이 있습니다.유사많은 것을 제공합니다posix-스타일 정규 표현.

Like검색, 존재

9.7.1. Like

StringLike패턴 [탈출Escape-Character]
String좋아하지 않음패턴 [탈출Escape-Character]

theLike표현식 반환String스포츠 토토 결과합니다패턴. (예상대로좋아하지 않음표현식 반환Like진실을 반환합니다StringLike패턴).)

if패턴포함하지 않습니다Like평등 연산자처럼 행동합니다. an_) in패턴싱글을 의미합니다%) 스포츠 토토 결과합니다

일부 예 :

'ABC'Like 'ABC'true'ABC'like 'a%'true'ABC'like '_b_'true'ABC'like 'c'거짓

Like항상 패턴 일치

문자 그대로 밑줄이나 백분율 부호와 스포츠 토토 결과합니다패턴보다 우선해야합니다탈출절. 탈출 캐릭터와 스포츠 토토 결과합니다

참고 :당신이있는 경우Standard_Conforming_strings끄기, 모든 백 슬래시섹션자세한 내용은

글쓰기로 탈출 문자를 선택할 수도 있습니다탈출 ''. 이것은 효과적으로 비활성화됩니다

키워드ilike사용할 수 있습니다Like경기를하기 위해SQL표준이지만 APostgreSQL확장.

연산자~~와 동일합니다Like~~*대응ilike. 또한!~~and!~~*운영자좋아하지 않음andilike14177_14223PostgreSQL-specific.

9.7.2. 유사정규식

String유사패턴 [탈출Escape-Character]
String비슷하지 않음패턴 [탈출Escape-Character]

the유사운영자Like, 패턴을 해석한다는 점을 제외하고Like표기법 및 일반적인 일반

LikeLike,유사운영자는 그 경우에만 성공합니다Like, 유사합니다용도_and%싱글을 나타내는 와일드 카드 문자로서.and.*in

이 시설 외에도 빌린이 시설 외에Like, 유사합니다이 패턴 매칭 메타 카라스터를 지원합니다

  • |교대를 나타냅니다 (어느 쪽이든

  • *|

  • +의 반복을 나타냅니다

  • ?의 반복을 나타냅니다

  • {m}를 나타냅니다mTimes.

  • {m,}를 나타냅니다m또는 더 많은 시간.

  • {m,n}m그리고nTimes.

  • 괄호()익숙해 질 수 있습니다

  • 브래킷 표현[...]POSIX 일반과 마찬가지로 문자 클래스를 지정합니다

기간에 주목하십시오 (.)는 아닙니다유사.

withLike, 백 슬래시탈출.

일부 예 :

'ABC'와 유사한 'ABC'true'ABC' 'a'거짓'%(b | d)%'와 유사한 'ABC'true'ABC'와 비슷한 '(b | c)%'거짓

theSubstringSubstring (StringFrom패턴forEscape-Character), 제공유사합니다, 지정된 패턴은 전체 데이터와 일치해야합니다"). 패턴 부분과 일치하는 텍스트

몇 가지 예,#"구분

Substring ( '%#"O_B#"%'for '#').OOBSubstring ( '#'#'O_B#"%'for '#')NULL

9.7.3. posix정규식

표 9-12POSIX를 사용하여 패턴 일치에 사용 가능한 연산자를 나열합니다

표 9-12. 정규 표현식 일치

운영자 설명 example
~ 정규 표현, 사례 민감성 스포츠 토토 결과 '토마스'~
~* 정규 표현, 사례 insensitive 일치 '토마스'~*
!~ 정규 표현, 사례와 스포츠 토토 결과하지 않습니다 'Thomas'! ~
!~* 정규 표현식, 사례와 스포츠 토토 결과하지 않습니다 '토마스'! ~*

posix정규 표현Likeand유사운영자. 와 같은 많은 유닉스 도구egrep, sed,awk패턴 일치 언어를 사용하십시오

정규 표현식은 문자 순서입니다.일반 세트). 문자열은 aLike, 패턴 문자 일치 문자열Like같지 않은Like패턴, 정규 표현

일부 예 :

'ABC'~ 'ABC'true'ABC'~ '^a'true'abc'~ '(b | d)'true'abc'~ '^(b | c)'거짓

theposix패턴

theSubstringSubstring (StringFrom패턴), a의 추출을 제공합니다

일부 예 :

Substring ( 'O.B'에서 'foobar')OOB서브 스트링 ( 'o (.) b')의 'foobar')o

theregexp_replace함수regexp_replace(소스, 패턴, 교체 [, 플래그]). 그만큼소스문자열이 변경되지 않은 경우 반환됩니다패턴. 스포츠 토토 결과가 있으면소스문자열이 반환됩니다교체문자열교체문자열이 포함될 수 있습니다\n, 여기n는 1-9입니다n'the 괄호의 하위 표현\ &기판 스포츠 토토 결과임을 나타냅니다\\문자 그대로의 백 슬래시를플래그매개 변수는 0 이상을 포함하는 선택적 텍스트 문자열입니다.i사례에 민감한 스포츠 토토 결과를 지정합니다.g교체를 지정합니다테이블.

일부 예 :

regexp_replace ( 'foobarbaz', 'b ..', 'x')fooxbazregexp_replace ( 'foobarbaz', 'b ..', 'x', 'g')fooxxregexp_replace ( 'foobarbaz', 'b (..)', e'x \\ 1y ','g ')fooxaryxazy

theregexp_matches함수regexp_matches(String, 패턴 [, 플래그]). 기능g아래 플래그). 인 경우패턴함수와 일치하지 않습니다n'thn'the 괄호의 하위 표현"비 캡처"괄호; 아래를 참조하십시오플래그매개 변수g함수가 각각을 찾도록합니다테이블.

일부 예 :

regexp_matches를 선택하십시오 ( 'foobarbequebaz', '(bar) (beque)');

강제가 가능합니다regexp_matches ()항상 한 행을 반환합니다select모든 행을 원할 때 대상 목록

col1, (탭에서 regexp_matches (col2, '(bar)'))를 선택하십시오.

theregexp_split_to_table함수는 POSIX 정규 표현식을 사용하여 문자열을 분할합니다regexp_split_to_table(String, 패턴 [, 플래그]). 없다면패턴,String. 만약에플래그매개 변수는 0 이상을 포함하는 선택적 텍스트 문자열입니다.regexp_split_to_table지원테이블.

theregexp_split_to_array함수는와 동일하게 동작합니다regexp_split_to_table를 제외하고regexp_split_to_array반환합니다텍스트. 그것은 있습니다regexp_split_to_array(String, 패턴 [, 플래그]). 매개 변수regexp_split_to_table.

일부 예 :

regexp_split_to_table에서 foo를 선택하십시오 ( '빠른 갈색 여우는 게으른 개를 뛰어 넘었습니다', e '\\ s+') foo;

마지막 예에서 알 수 있듯이 Regexp 분할 기능regexp_matches,

9.7.3.1. 정규 표현

PostgreSQL'정기

정규 표현식 (res), 정의 된대로posix1003.2, 두 가지 형태로 제공됩니다 :확장 res 또는EREs (대략egrep) 및BASIC res 또는bres (대략ed). PostgreSQL두 가지 양식과도 지원합니다re이 비 포스크를 사용하고 있습니다고급 res 또는are33673_33976

참고 : PostgreSQL항상 처음에 추정됩니다임베디드 옵션TO섹션. 이것은 호환성에 유용 할 수 있습니다posix1003.2 규칙.

정규 표현식은 하나 이상으로 정의됩니다분기, 분리|. 그것은 하나와 일치하는 모든 것과 스포츠 토토 결과합니다

지점이 0 이상입니다정량화또는제약 조건,

정량화 된 원자는입니다.Atom아마도 싱글이 뒤 따릅니다Quantifier. 정량자가 없으면 스포츠 토토 결과합니다Atom테이블. 가능한 정량 자와 그 의미는 다음과 같습니다테이블.

A 제약 조건빈과 스포츠 토토 결과합니다테이블; 몇 가지 더 많은 제약이 나중에 설명되어 있습니다.

표 9-13. 정규 발현 원자

Atom 설명
(re) (whererere
(? :re) 위와 같이 성냥은 언급되지 않았습니다"비 캡처"괄호 세트)
. 단일 문자와 스포츠 토토 결과
[chars] a 브래킷 표현,chars(참조섹션자세한 내용은)
\k (wherekis\\백 슬래시 문자와 스포츠 토토 결과
\c 여기서cIS탈출, 참조섹션(Ares 만; Eres와 Bres에서c)
{ 숫자 이외의 캐릭터가 뒤 따르는 경우,{; 그 뒤에 숫자가 뒤 따릅니다bound(아래 참조)
x 여기서xis

RE는 백 슬래시로 끝날 수 없습니다 (\).

참고 :당신이있는 경우Standard_Conforming_strings꺼져 있으십시오섹션자세한 내용은

표 9-14. 정규 표현

Quantifier 매치
* 원자의 0 이상의 스포츠 토토 결과 시퀀스
+ 원자의 1 개 이상의 스포츠 토토 결과 시퀀스
? 원자의 0 또는 1 일치 시퀀스
{m} 정확한 시퀀스m원자의 스포츠 토토 결과
{m,} A의 시퀀스m또는 원자의 더 많은 일치
{m,n} A의 시퀀스mthroughn(포함)m초과 할 수 없습니다n
*? 비가비 버전의*
+? 비가비 버전의+
?? 비가비 버전의?
{m? 비가비 버전의{m}
{m,? 비가비 버전의{m,}
{m,n? 비가비 버전의{m,n}

사용 양식{...}알려져 있습니다바운드. 숫자mandn경계 내에는 허용 가능한 서명 된 소수 정수가 있습니다

비-그 리지Quantifiers (사용 가능Greedy)섹션자세한 내용은

참고 :정량자는 즉시 따를 수 없습니다**IS^또는|.

표 9-15. 정규 표현

제약 조건 설명
^ 문자열의 시작 부분에서 일치
$ 문자열 끝에서 일치
(? =re) 긍정적 인 룩 하이드서브 스트링이 스포츠 토토 결과하는 모든 시점에서 스포츠 토토 결과re시작 (Ares
(?!re) 음수 룩 하이드서브 스트링이 스포츠 토토 결과하지 않는 어느 시점에서 스포츠 토토 결과re시작 (Ares

Lookahead 제약 조건을 포함 할 수 없습니다뒤로 참조(참조섹션), 그 안에있는 모든 괄호가 고려됩니다

9.7.3.2. 까치발

A 브래킷 표현는 목록입니다[]. 그것^,not나머지 목록에서.-, 이것은 전체 범위의 속기입니다[0-9]inASCII모든 소수점과 스포츠 토토 결과합니다A-C-E. 범위는 매우 있습니다

문자 포함]^, 그것이 사용되는 경우). 문자를 포함하려면-, 그것을 첫 번째 또는 마지막으로 만드십시오-a의 첫 번째 끝점으로[.and.]그것을 집합 요소로 만들려면[(다음 참조\그렇지 않습니다

브래킷 표현 내에서, 집합 요소 (a[.and.]의 순서를 나타냅니다chCollating Element, 그런 다음 re[[. ch.]]*c처음 5 자와 스포츠 토토 결과합니다CHCHCC.

참고 : PostgreSQL현재는 그렇지 않습니다

브래킷 표현식 내에서, 집합 요소가 동봉되었습니다[=and=]is등가, 모든 캐릭터 시퀀스에 서 있습니다[.and.].)oand^동등한 클래스의 구성원이며[[= o =]], [[=^=]][O^]are

괄호 표현식 내에서 캐릭터 클래스의 이름[:and:]모든 문자 목록을 나타냅니다Alnum, 알파, blank, cntrl, DIGIT, 그래프, 낮은, 인쇄, PANCT, Space, 어퍼, xdigit. 이것들CTYPE. 로케일은 할 수 있습니다

괄호 표현식에는 두 가지 특별한 경우가 있습니다[[: <:]]and[[:> :]]일치하는 제약 조건입니다Alnum문자 (.CTYPE) 또는 밑줄.posix1003.2

9.7.3.3. 정규 표현

탈출특수 시퀀스입니다\\\\는 일반적인 캐릭터입니다. (그만큼

캐릭터 엔트리 탈출표 9-16.

계급 속도 탈출제공표 9-17.

A 제약 탈출is테이블.

A 뒤로 참조 (\n) 스포츠 토토 결과합니다n(참조테이블). 예를 들어,([bc]) \ 1매치BB또는CC하지만BC또는CB. 하위 표현은 전적으로해야합니다

참고 :탈출의 주요임을 명심하십시오\언제 두 배가되어야합니다

'123'~ e '^\\ d 3'true

표 9-16. 정규 표현

탈출 설명
\ a ALERT (BELL) 문자 C
\ b c와 같이 백 스페이스
\ b BacksLash의 동의어 (\) 필요를 줄이는 데 도움이됩니다
\ cX (whereXX, 다른 비트는 모두입니다
\ e Collating-Sequence 이름 인 캐릭터esc033
\ f c와 같이 피드 양식
\ n Newline, C
\ r Carriage Return, C
\ t c와 같이 수평 탭
\ uWXYZ (whereWXYZis0xWXYZ
\ ustuvwxyz (wherestuvwxyz정확히 8 개의 16 진수 숫자) 문자0xstuvwxyz
\ V C와 같이 수직 탭
\ xHHH (whereHHH0xHHH(16 진수에 관계없이 단일 문자
\ 0 가치가있는 캐릭터0(널 바이트)
\XY (whereXYIS뒤로 참조) 캐릭터0XY
\xyz (wherexyzIS뒤로 참조) 캐릭터0xyz

16 진수 숫자는0-9, a-fA-F. 옥탈 숫자는0-7.

숫자-입력은 외부 값을 지정하는 이스케이프입니다\ u1234문자를 의미U+1234. 다른 멀티 바이트 인코딩의 경우

캐릭터 입력 탈출은 항상 평범한 것으로 간주됩니다\ 135is]ASCII에서\ 135브래킷을 종료하지 않습니다

표 9-17. 정규 표현

탈출 설명
\ d [[: digit :]]
\ s [[: Space :]]
\ w [[: alnum :] _](참고
\ d [^[: digit :]]
\ s [^[: space :]]
\ w [^[: alnum :] _](참고

브래킷 표현 내에서\ d, \ s\ w외부 괄호를 잃고\ d, \ s\ w불법입니다. (예를 들어,[A-C \ D]와 동일합니다[a-c [: digit :]]. 또한,[A-C \ D][a-c^[: digit :]], 불법입니다.)

표 9-18. 정규 표현 제약

탈출 설명
\ a 문자열의 시작 부분에서만 스포츠 토토 결과합니다 (참조섹션이것이 어떻게 다른지^)
\ m 단어의 시작 부분에서만 스포츠 토토 결과
\ m 단어의 끝에서만 스포츠 토토 결과
\ y a의 시작 또는 끝에서만 스포츠 토토 결과합니다
\ y 시작이 아닌 지점에서만 스포츠 토토 결과
\ z 문자열 끝에서만 스포츠 토토 결과합니다 (참조섹션이것이 어떻게 다른지$)

단어는의 사양에서와 같이 정의됩니다.[[: <:]]and[[:> :]]위. 제약 도피가 있습니다

표 9-19. 정기적 인 표현

탈출 설명
\m (wheremism'th subexpression
\Mnn (wheremisNN더 많은 숫자이고 소수점 값MnnMnn'th subexpression

참고 :사이에는 고유 한 모호성이 있습니다

9.7.3.4. 정규 표현

위에서 설명한 주요 구문 외에도

RE는 두 개의 특별 중 하나부터 시작할 수 있습니다감독접두사. RE가 시작되면*** :, 나머지는 다시 사용됩니다PostgreSQL, RES가 가정되기 때문에플래그REGEX 함수에 대한 매개 변수.) RE가 시작되는 경우***=, 나머지 RE는

an은 시작할 수 있습니다내장: 시퀀스(?xyz)(wherexyz는 하나 이상의 알파벳입니다플래그Regex 함수에 대한 매개 변수.테이블. 이 동일한 옵션 문자는에 사용됩니다.플래그Regex의 매개 변수

표 9-20. 내장 된 편지

옵션 설명
b 나머지 RE는 BRE
c Case-Ensentitive 매칭 (연산자를 재정의합니다
e RE의 나머지는 ERE
i Case Insensitive Matching (참조섹션) (오퍼레이터 유형을 재정의)
m 역사적 동의어에 대한n
n Newline-Ensentitive Matching (참조섹션)
p 부분 Newline에 민감한 매칭 (참조섹션)
q 나머지 RE는 문자 그대로 ("인용") 문자열, 모두 일반
s 비 뉴 라인 민감성 스포츠 토토 결과 (기본값)
t 타이트 구문 (기본값; 아래 참조)
w 반대 부분 Newline-Ensentive ("이상한") 매칭 (참조섹션)
x 확장 된 구문 (아래 참조)

임베디드 옵션은에서 적용됩니다.)시퀀스 종단. 그들은 나타날 수 있습니다*** :감독이 있으면).

평소 외에도 (titg)확장구문, 사용할 수 있습니다x옵션. ~ 안에#그리고 다음 Newline (또는 끝의 끝

  • 흰색 공간 문자 또는#앞서\유지

  • 공백 또는#

  • 공백과 주석은 내부에 나타날 수 없습니다(? :

이 목적을 위해 흰색 공간 문자는 비어 있습니다.Space캐릭터 클래스.

마지막으로, 외부 괄호 표현식, the(?#TTT)(whereTTT텍스트는 없습니다))는 주석입니다.(? :. 그러한 의견은 더 역사적입니다

없음***=감독은 사용자를 지정했습니다

9.7.3.5. 정규 표현 일치

RE가 둘 이상과 스포츠 토토 결과 할 수있는 경우Greedy또는Greedy.

RE가 탐욕인지 여부는

  • 대부분의 원자와 모든 제약은 탐욕이 없습니다

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

  • 고정 반복 정량자를 갖는 정량화 된 원자{m}또는{m?)

  • 다른 정상 정량기가있는 정량화 된 원자{m,n}withm동일n)는 욕심이 많습니다 (가장 길기

  • 비 게리 수량자를 갖는 정량화 된 원자{m,n?withm동일n)는 비가비 (가장 짧은 선호)입니다

  • 지점-즉, 최상위 수준이없는 re|운영자 - 동일합니다

  • |운영자는 항상입니다

위의 규칙은 욕심성 속성을 연관시킵니다전체적으로. 한 번

이것이 의미하는 바의 예 :

SELLE SELECT SILLTRING ( 'XY1234Z', 'y*([0-9] 1,3)');결과 :123SELLE SELECT SPTRING ( 'XY1234Z', 'y*? ([0-9] 1,3)');결과 :1

첫 번째 경우, RE 전체는 탐욕 스럽기 때문에Y*탐욕 스럽습니다. 시작과 스포츠 토토 결과 할 수 있습니다Y그리고 가장 긴 스포츠 토토 결과합니다Y123. 출력은 괄호 안의 부분입니다123. 두 번째 경우,y*?는 비 게리입니다. 시작할 수 있습니다Y, 가장 짧은 스포츠 토토 결과Y1. 하위 표현[0-9] 1,3욕심이 많지만 변경할 수는 없습니다1.

간단히 말해서, RE가 탐욕과 비 게리를 모두 포함하는 경우"Eat"각각에 대한

정량 자{1,1}and1,1?강제로 사용될 수 있습니다

regexp_matches를 선택하십시오 ( 'ABC01234XYZ', '(.*) (\ d+) (.*)');결과 :ABC0123,4, XYZ

작동하지 않았다 : 첫 번째.*IS"먹는다"만큼\ d+

regexp_matches를 선택하십시오 ( 'ABC01234XYZ', '(.*?) (\ d+) (.*)');결과 :abc, 0, ""

지금은 전체적으로 RE가

regexp_matches ( 'abc01234xyz', '(? : (.*?) (\ d+) (.*)) 1,1');를 선택하십시오.결과 :ABC, 01234, XYZ

RE의 전반적인 탐욕을 개별적으로 통제합니다

더 길거나 짧은 경기가 무엇인지 결정할 때 스포츠 토토 결과BB*세 가지와 스포츠 토토 결과합니다ABBBC; (주 | wee) (야간 | 기사단)스포츠 토토 결과합니다주중;(.*).*와 스포츠 토토 결과합니다ABC괄호 화 된 하위 표현(A*)*와 스포츠 토토 결과합니다BC전체와 괄호가 모두

사례 독립적 스포츠 토토 결과가 지정되면 효과가 있습니다x[xx]. 언제[x][xx]and[^x][^xx].

Newline에 민감한 매칭이 지정된 경우.및 괄호 사용^Newline 캐릭터와 결코 일치하지 않습니다 (So^and$이후의 빈 문자열과 스포츠 토토 결과합니다\ aand\ zString의 시작 또는 끝 계속전용.

부분 Newline에 민감한 매칭이 지정되면이.및 브래킷 표현식^and$.

역 부분 Newline에 민감한 일치가 인 경우^and$Newline에 민감합니다.및 브래킷

9.7.3.6. 한계와

RES의 길이에 특정 제한이 부과되지 않습니다.

실제로 호환되지 않는 Ares의 유일한 특징\그렇지 않습니다***이사의 구문 마찬가지로

많은 ARE 확장은 Perl에서 빌려 왔지만\ b, \ b,

Ares와 사이에 두 가지 중요한 비 호환성이 존재합니다PostgreSQL:

  • In Ares,\

  • In Ares,\여전히 특별한 것으로 남아 있습니다[]그래서 a\브래킷 내\\.

9.7.3.7. 기본 정규

Bres는 여러 측면에서 ERE와 다릅니다. Bres,|, +?일반적인 캐릭터이며 거기에 있습니다\and\with{and}그 자체로 평범한 문자.\ (and\)with(and)by^is$끝을 제외한 일반적인 캐릭터입니다*는 일반적인 캐릭터입니다^). 마지막으로, 한 자릿수 백\ <and\>동의어입니다[[: <:]]and[[:> :]]각각; 다른 탈출은 없습니다