패턴 일치에 대한 세 가지 별도의 접근 방식이 있습니다.PostgreSQL: 전통적인SQL 좋아요
운영자, 더 최근유사
연산자 (SQL : 1999에 추가) 및posix-스타일 정규 표현. 기본 외에“이 스포츠 토토 베트맨열 이이 패턴과 일치합니까?”연산자, 기능은 일치하는 하위 스포츠 토토 베트맨열을 추출하거나 교체하고 일치하는 위치에서 스포츠 토토 베트맨열을 분할 할 수 있습니다.
이것을 넘어서는 패턴 일치 요구가있는 경우 Perl 또는 Tcl에서 사용자 정의 기능을 작성하는 것을 고려하십시오.
대부분의 정규 표현력 검색은 매우 빠르게 실행될 수 있지만, 임의의 시간과 메모리가 처리하는 데 필요한 정기적 인 표현이 고안 될 수 있습니다. 적대적인 소스에서 정기적 인 표현력 검색 패턴을 받아들이는 것에주의하십시오.
사용 검색유사
패턴은 동일한 보안 위험이 있습니다.유사
동일한 기능을 많이 제공posix-스타일 정규 표현.
좋아요
다른 두 옵션보다 훨씬 간단한 검색은 불가능한 패턴 소스와 함께 사용하기에 더 안전합니다.
세 종류의 패턴 일치 연산자는 비 결정적 콜라주를 지원하지 않습니다. 필요한 경우,이 제한 사항을 해결하기 위해 표현식에 다른 협업을 적용하십시오.
좋아요
String
좋아요패턴
[탈출Escape-Character
]String
좋아하지패턴
[탈출Escape-Character
]
the좋아요
expression은이면 참으로 반환됩니다String
제공된 것과 일치패턴
. (예상대로좋아하지
표현식이 false를 반환하면좋아요
RECONSS TRUE, 그 반대도 마찬가지입니다. 동등한 표현은NOT (
.)String
좋아요패턴
)
if패턴
퍼센트 부호 또는 밑줄을 포함하지 않으면 패턴은 문자열 자체 만 나타냅니다. 이 경우좋아요
평등 연산자처럼 행동합니다. 밑줄 (_
) in패턴
단일 캐릭터를 나타냅니다. 백분율 표시 (%
)는 0 개 이상의 스포츠 토토 베트맨의 순서와 일치합니다.
일부 예 :
'ABC'Like 'ABC'true'ABC'like 'a%'true'ABC'like '_b_'true'ABC'like 'c'거짓
좋아요
패턴 매칭은 항상 전체 문자열을 커버합니다. 따라서 문자열 내 어디에서나 시퀀스와 일치하는 경우 패턴이 퍼센트 부호로 시작하고 끝나야합니다..
다른 캐릭터와 일치하지 않고 스포츠 토토 베트맨 그대로 밑줄 또는 백분율 부호와 일치하려면 각각의 스포츠 토토 베트맨패턴
이스케이프 캐릭터가 앞에 있어야합니다. 기본 탈출 문자는 백 슬래시이지만를 사용하여 다른 사람을 선택할 수 있습니다.탈출
절. 탈출 캐릭터 자체와 일치하려면 두 개의 탈출 문자를 쓰십시오.
당신이있는 경우Standard_Conforming_strings끄면 스포츠 토토 베트맨 그대로 스포츠 토토 베트맨열 상수로 쓴 백 슬래시는 두 배가되어야합니다. 보다섹션 4.1.2.1자세한 내용은
글을 사용하여 탈출 문자를 선택할 수도 있습니다탈출 ''
. 이것은 효과적으로 탈출 메커니즘을 비활성화하여 밑줄의 특별한 의미와 패턴의 징후를 끄는 것이 불가능합니다..
SQL 표준에 따르면 생략탈출
(백 슬래시를 기본화하는 대신) 탈출 문자가 없음을 의미합니다.탈출
가치가 허용되지 않습니다.PostgreSQL이와 관련하여의 행동은 약간 비표준입니다.
키워드ilike
대신 사용할 수 있습니다좋아요
활성 로케일에 따라 매치를 케이스에 민감하게 만듭니다. 이것은에 없습니다.SQL표준이지만 APostgreSQL확장.
연산자~~
좋아요
및~~*
대응ilike
. 또한!~~
and!~~*
대표하는 연산자좋아하지
andilike
. 이 모든 운영자는PostgreSQL-특이 적. 이 연산자 이름이를 볼 수 있습니다.설명
파서가 실제로 번역하기 때문에 출력 및 유사한 장소좋아요
et al. 이 연산자에게.
문구좋아요
, ilike
, 좋아하지
및ilike
일반적으로 연산자로 취급됩니다PostgreSQL구문; 예를 들어에서 사용할 수 있습니다.표현
운영자
any (SubQuery
) 구성 요소, an탈출
절도 포함 할 수 없습니다. 일부 모호한 경우 대신 기본 연산자 이름을 사용해야 할 수도 있습니다.
또한 접두사 연산자 참조^@
및 해당Starting_with
함수는 스포츠 토토 베트맨열의 시작과 단순히 일치하는 경우에 유용합니다.
유사
정규식String
유사패턴
[탈출Escape-Character
]String
패턴
[탈출Escape-Character
]
the유사
연산자는 패턴이 주어진 문자열과 일치하는지 여부에 따라 true 또는 false를 반환합니다. 와 비슷합니다.좋아요
, SQL 표준의 정규 표현식 정의를 사용하여 패턴을 해석한다는 점을 제외하고. SQL 정규 표현은 간의 호기심이 있습니다좋아요
표기법 및 공통 (POSIX) 정규 표현 표기법.
좋아요좋아요
, The유사
운영자는 패턴이 전체 문자열과 일치하는 경우에만 성공합니다. 이것은 패턴이 문자열의 모든 부분과 일치 할 수있는 일반적인 정규 표현 동작과 다릅니다.좋아요
, 유사
용도_
and%
각각 단일 스포츠 토토 베트맨와 스포츠 토토 베트맨열을 나타내는 와일드 카드 스포츠 토토 베트맨로서 (이들과 비슷합니다.
and.*
17192_17222
이 시설 외에도 빌린이 시설 외에좋아요
, 유사
POSIX 정규 표현에서 빌린이 패턴 매칭 메타 카라 터스 지원 :
|
교대 (두 가지 대안 중 하나)를 나타냅니다.
*
이전 항목의 반복을 0 이상 또는 더 이상 반복합니다.
+
이전 항목의 반복을 한 번 이상 반복합니다.
?
이전 항목의 반복을 0 또는 한 번에 나타냅니다.
{
m
}
이전 항목의 반복을 정확하게 나타냅니다m
Times.
{
m
,}
이전 항목의 반복을 나타냅니다m
또는 더 많은 시간.
{
m
,
n
}
적어도 이전 항목의 반복을 나타냅니다m
n
Times.
괄호()
항목을 단일 논리 항목으로 그룹화하는 데 사용할 수 있습니다.
브래킷 표현[...]
POSIX 정규 표현식과 마찬가지로 캐릭터 클래스를 지정합니다.
기간에 주목하십시오 (.
)유사
.
with좋아요
, Backslash는 이러한 Metacharacters의 특별한 의미를 비활성화합니다. 다른 탈출 문자는로 지정할 수 있습니다.탈출
또는 서면으로 탈출 기능을 비활성화 할 수 있습니다탈출 ''
.
SQL 표준에 따르면 생략탈출
(백 슬래시를 기본화하는 대신) 탈출 문자가 없음을 의미합니다.탈출
가치가 허용되지 않습니다.PostgreSQL이와 관련하여의 행동은 약간 비표준입니다.
또 다른 비표준 연장은 문자 또는 숫자로 탈출 문자를 따르는 것입니다. 보다표 9.20, 표 9.21및표 9.22아래.
일부 예 :
'ABC'와 유사한 'ABC'true'ABC' 'A'거짓'ABC' '%(b | d)%'와 유사합니다.true'ABC'와 유사한 '(b | c)%'거짓'-abc-'%\ mabc \ m%'과 유사합니다.true'Xabcy' '%\ mabc \ m%'과 유사합니다.거짓
theSubstring
3 개의 매개 변수가있는 함수는 SQL 정규식 패턴과 일치하는 하위 문자열의 추출을 제공합니다. 함수는 SQL99 구문에 따라 작성 될 수 있습니다.
Substring (String
From패턴
forEscape-Character
)
또는 평범한 3 학습 기능 :
Substring (String
,패턴
,Escape-Character
)
with유사
, 지정된 패턴은 전체 데이터 문자열과 일치하거나 함수가 실패하여 NULL을 반환해야합니다. 일치하는 데이터 서브 스트링이 관심있는 패턴의 일부를 나타내려면, 패턴은 이스케이프 문자의 두 가지 발생과 이중 인용문 (의 두 가지 발생을 포함해야합니다."
). 경기가 성공하면이 분리기 사이의 패턴 부분과 일치하는 텍스트가 반환됩니다.
이스케이프 더블 쿼트 분리기는 실제로 분할Substring
의 패턴 3 개의 독립적 인 정규식으로의 패턴; 예를 들어, 수직 막대 (|
) 세 섹션 중 하나는 해당 섹션에만 영향을 미칩니다. 또한,이 정규식의 첫 번째와 3 분의 1은 데이터 문자열이 어떤 패턴과 일치하는지에 대한 모호성이있을 때 가장 큰 텍스트 양과 일치하도록 정의됩니다.
SQL 표준의 확장으로PostgreSQL단 하나의 탈출구-쿼트 분리기가있을 수 있습니다.이 경우 세 번째 정규 표현식은 비어 있습니다. 또는 분리기가 없으며,이 경우 첫 번째 및 세 번째 정규 표현식이 공허한 것으로 간주됩니다.
몇 가지 예,#"
반환 스포츠 토토 베트맨열 구분 :
Substring ( '%#"O_B#"%'for '#').OOBSubstring ( '#'#'#'O_B#"%'for'#')NULL
표 9.16POSIX 정규 표현식을 사용하여 패턴 일치에 사용 가능한 연산자를 나열합니다.
표 9.16. 정규 표현 시합 연산자
운영자 설명 예제 |
---|
문자열은 정규 표현식, 사례를 민감하게 일치시킵니다
|
문자열은 정규 표현식, 사례는 무감각하게 일치합니다
|
문자열은 정규 표현식, 사례를 민감하게 일치하지 않습니다
|
문자열은 정규 표현식, 사례는 무감각합니다
|
posix정규 표현식은보다 패턴 일치에 대한 더 강력한 수단을 제공합니다좋아요
and유사
운영자. 와 같은 많은 유닉스 도구egrep
, sed
또는awk
여기에 설명 된 것과 유사한 패턴 일치 언어를 사용하십시오.
정규 표현식은 문자열 세트의 약식 정의 인 문자 순서입니다 (A일반 세트). 문자열은 정규 표현식에 의해 설명 된 일반 세트의 구성원 인 경우 정규 표현식과 일치한다고합니다.좋아요
, 패턴 문자는 정규 표현 언어의 특수 문자가 아니라면 정규 표현식은와 다른 특수 문자를 사용하지 않는 한 정확히 문자열 문자와 일치합니다.좋아요
같지 않은좋아요
패턴, 정규식이 문자열의 시작 또는 끝에 명시 적으로 고정되지 않는 한 정규 표현식은 문자열 내 어디에서나 일치 할 수 있습니다..
일부 예 :
'abcd'~ 'bc'true'ABCD'~ 'A.C'True - Dot은 모든 스포츠 토토 베트맨와 일치'abcd'~ 'a.*d'true -*
이전 패턴 항목을 반복'abcd'~ '(b | x)'true -|
수단 또는 괄호 그룹'abcd'~ '^a'true -^
String의 시작에 앵커'abcd'~ '^(b | c)'false - 앵커링을 제외한 일치
theposix패턴 언어는 아래에 훨씬 자세히 설명되어 있습니다.
theSubstring
두 매개 변수가있는 함수Substring (
, POSIX 정규 표현 패턴과 일치하는 서브 스트링의 추출을 제공합니다. 일치하지 않으면 Null을 반환합니다. 그렇지 않으면 패턴과 일치하는 텍스트의 첫 번째 부분입니다.String
From패턴
)
일부 예 :
서브 스트링 ( 'o.b')OOB서브 스트링 ( 'o (.) b')의 'foobar')o
theregexp_replace
함수는 POSIX 정규 표현 패턴과 일치하는 하위 문자열에 대한 새 텍스트를 대체합니다. 구문이 있습니다regexp_replace
(소스
, 패턴
, 교체
[, 플래그
]). 그만큼소스
스포츠 토토 베트맨열은와 일치하지 않으면 변경되지 않습니다.패턴
. 일치가 있으면소스
스포츠 토토 베트맨열이와 함께 반환됩니다.교체
일치하는 하위 스포츠 토토 베트맨로 치환 된 스포츠 토토 베트맨열. 그만큼교체
스포츠 토토 베트맨열이 포함될 수 있습니다\
n
, 여기서n
는 1 ~ 9입니다.n
'패턴의 괄호가 삽입 된 하위 표현을 삽입해야하며 포함 할 수 있습니다\ &
전체 패턴과 일치하는 서브 스트링이 삽입되어야 함을 나타냅니다. 쓰다\\
교체 텍스트에 문자 그대로의 백 슬래시를 넣어야하는 경우. 그만큼플래그
매개 변수는 기능의 동작을 변경하는 0 이상의 단일 레터 플래그가 포함 된 선택적 텍스트 문자열입니다. 깃발i
Case Insensitive 매칭을 지정하고 플래그g
첫 번째 서브 스트링이 아닌 각 일치하는 서브 스트링의 교체를 지정합니다. 지원되는 깃발 (아니지만g
)에 설명되어표 9.24.
일부 예 :
regexp_replace ( 'foobarbaz', 'b ..', 'x')fooxbazregexp_replace ( 'foobarbaz', 'b ..', 'x', 'g')fooxxregexp_replace ( 'foobarbaz', 'b (..)', 'x \ 1y', 'g')fooxaryxazy
theregexp_match
함수 POSIX 정규 표현 패턴의 첫 번째 일치로 인한 캡처 된 하위 문자열의 텍스트 배열을 리턴합니다. 구문이 있습니다regexp_match
(String
, 패턴
[, 플래그
]). 일치하지 않으면 결과는입니다.NULL
. 경기가 발견되고패턴
괄호가 포함되지 않은 하위 표현이 포함되지 않으면 결과는 전체 패턴과 일치하는 하위 문자열을 포함하는 단일 요소 텍스트 배열입니다. 경기가 발견되고패턴
괄호가 된 하위 표현을 포함하고 결과는 텍스트 배열입니다.n
'th 요소는 일치하는 부분 스포츠 토토 베트맨열입니다.n
'TH 괄호의 하위 표현패턴
(계산하지 않음“비 캡처”괄호; 자세한 내용은 아래를 참조하십시오).플래그
매개 변수는 기능의 동작을 변경하는 0 이상의 단일 레터 플래그가 포함 된 선택적 텍스트 문자열입니다. 지원되는 플래그는에 설명되어 있습니다.표 9.24.
일부 예 :
regexp_match ( 'foobarbequebaz', 'bar.*que');
전체 일치하는 부분 스포츠 토토 베트맨열을 원하는 공동 케이스에서NULL
일치하지 않으려면
select (regexp_match ( 'foobarbequebaz', 'bar.*que')) [1];
theregexp_matches
함수는 POSIX 정규 표현 패턴을 문자열과 일치시키는 캡처 된 서브 스트링의 텍스트 배열 세트를 반환합니다. 그것은와 동일한 구문을 가지고 있습니다.regexp_match
. 이 함수는 일치하지 않으면 행을 반환하지 않습니다. 일치하는 경우 1 행 및g
플래그가 제공되지 않거나N
있는 경우 행N
일치 및g
플래그가 제공됩니다. 각각의 반환 된 행은 일치하는 전체 하위 문자열을 포함하는 텍스트 배열 또는 괄호의 괄호 안정된 하위 표현과 일치하는 하위 문자열입니다.패턴
, 위에서 설명한대로regexp_match
. regexp_matches
표 9.24더하면g
첫 번째 경기뿐만 아니라 모든 경기를 반환하도록 명령하는 플래그
일부 예 :
regexp_matches를 선택하십시오 ( 'foo', 'not there');
대부분의 경우regexp_matches ()
g
플래그, 첫 번째 경기 만 원한다면 사용하기가 더 쉽고 효율적이기 때문에regexp_match ()
. 하지만,regexp_match ()
만 존재합니다PostgreSQL버전 10 이상. 이전 버전에서 작업 할 때 일반적인 요령은 A를 배치하는 것입니다.regexp_matches ()
예를 들어 하위 선택자로 호출하십시오.
col1, (탭에서 regexp_matches (col2, '(bar)'))를 선택하십시오.
이것은 일치하는 경우 텍스트 배열을 생성합니다.NULL
그렇지 않은 경우regexp_match ()
하위 선택이 없으면이 쿼리는 일치하지 않고 테이블 행에 대해 전혀 출력을 생성하지 않습니다. 이는 일반적으로 원하는 동작이 아닙니다.
theregexp_split_to_table
함수는 POSIX 정규 표현 패턴을 구분 기자로 사용하여 문자열을 나눕니다. 구문이 있습니다regexp_split_to_table
(String
, 패턴
[, 플래그
]). 와 일치하지 않는 경우패턴
, 함수는를 반환합니다.String
. 일치가 하나 이상인 경우 각 경기마다 마지막 경기 끝 (또는 문자열의 시작)에서 경기 시작으로 텍스트를 반환합니다.플래그
매개 변수는 기능의 동작을 변경하는 0 이상의 단일 레터 플래그를 포함하는 선택적 텍스트 문자열입니다.regexp_split_to_table
에 설명 된 깃발을지지합니다표 9.24.
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를 선택하십시오 ( '빠른 갈색 여우는 게으른 개를 뛰어 넘습니다.', '\ s+')는 foo;
마지막 예제에서 알 수 있듯이 REGEXP 분할 함수는 문자열의 시작 또는 끝에서 또는 이전 일치 직후에 발생하는 제로 길이의 일치를 무시합니다. 이것은 regexp 매칭의 엄격한 정의와 상반됩니다.regexp_match
andregexp_matches
그러나 일반적으로 실제로 가장 편리한 행동입니다. Perl과 같은 다른 소프트웨어 시스템은 유사한 정의를 사용합니다.
PostgreSQL의 정규식은 Henry Spencer가 작성한 소프트웨어 패키지를 사용하여 구현됩니다. 아래의 정규 표현에 대한 많은 설명은 그의 매뉴얼에서 구두로 복사됩니다.
정규 표현식 (res), 정의 된대로posix1003.2, 두 가지 형태로 오십시오 :확장 res 또는EREs (대략egrep
) 및BASIC res 또는bres (대략ed
). PostgreSQL두 가지 양식을 모두 지원하고 POSIX 표준에 없지만 Perl 및 Tcl과 같은 프로그래밍 언어의 가용성으로 인해 널리 사용 된 일부 확장 기능을 구현합니다.re이 비 포스 확장을 사용하는 것은입니다.고급 res 또는are이 문서에서. Ares는 거의 정확한 ERES의 슈퍼 세트이지만 BRES는 몇 가지 표기법 비 호환성을 가지고 있습니다 (훨씬 더 제한적).
PostgreSQL항상 처음에는 정기적 인 표현이 규칙을 따르는 것으로 가정합니다. 그러나 더 제한된 ERE 또는 BRE 규칙은 an을 선물하여 선택할 수 있습니다.임베디드 옵션re 패턴으로,섹션 9.7.3.4. 이것은 정확히 예상되는 응용 프로그램과의 호환성에 유용 할 수 있습니다posix1003.2 규칙.
정규 표현식은 하나 이상으로 정의됩니다분기, 분리|
. 그것은 가지 중 하나와 일치하는 모든 것과 일치합니다.
지점이 0 이상입니다정량화 된 원자또는제약 조건, 연결. 그것은 첫 번째 일치와 일치하고 두 번째 등의 경기와 일치합니다.
정량화 된 원자는입니다.Atom아마도 싱글이 뒤 따릅니다Quantifier. Quantifier가 없으면 원자와 일치합니다.Atom에 표시된 가능성이 될 수 있습니다.표 9.17. 가능한 정량 자와 그 의미는에 표시됩니다.표 9.18.
A 제약 조건빈 문자열과 일치하지만 특정 조건이 충족 될 때만 일치합니다. Quantifier를 따라 할 수없는 경우를 제외하고 원자를 사용할 수있는 경우 제약 조건을 사용할 수 있습니다.표 9.19; 몇 가지 더 많은 제약이 나중에 설명되어 있습니다.
표 9.17. 정규 발현 원자
Atom | 설명 |
---|---|
( re ) |
(wherere 정규 표현식) 일치하는 일치re |
(? : re ) |
위와 같이, 그러나 일치는보고에 주목되지 않습니다 (a“비 캡처”괄호 세트) (Ares 만 해당) |
. |
단일 스포츠 토토 베트맨와 일치 |
[ chars ] |
a 브래킷 표현chars (참조섹션 9.7.3.2자세한 내용) |
\ k |
(wherek 는 비 알파 너머 캐릭터입니다.\\ 백 슬래시 스포츠 토토 베트맨와 일치 |
\ c |
어디c alphanumeric (아마도 다른 스포츠 토토 베트맨 뒤에)탈출, 참조섹션 9.7.3.3(Ares 만; Eres and Bres에서, 이것은 일치합니다c ) |
{ |
숫자가 아닌 다른 스포츠 토토 베트맨가 뒤 따르는 경우 왼쪽-브레이스 스포츠 토토 베트맨와 일치{ ; 숫자가 뒤따를 때, 그것은 a의 시작입니다.bound (아래 참조) |
x |
어디x 다른 의미가없는 단일 캐릭터입니다. 그 스포츠 토토 베트맨와 일치 |
RE는 백 슬래시로 끝날 수 없습니다 (\
).
당신이있는 경우Standard_Conforming_strings끄면 스포츠 토토 베트맨 그대로 스포츠 토토 베트맨열 상수로 쓴 백 슬래시는 두 배가되어야합니다. 보다섹션 4.1.2.1자세한 내용은
표 9.18. 정규 표현 수량 자
Quantifier | 매치 |
---|---|
* |
원자의 0 이상의 순서 |
+ |
원자의 1 개 이상의 일치 시퀀스 |
? |
원자의 0 또는 1 일치 시퀀스 |
{ m } |
정확한 시퀀스m 원자의 일치 |
{ m ,} |
A의 시퀀스m 또는 원자의 더 많은 일치 |
{ m , n } |
A의 시퀀스m throughn (포함) 원자의 일치;m 초과 할 수 없습니다n |
*? |
비가비 버전의* |
+? |
비가비 버전의+ |
?? |
비가비 버전의? |
{ m ? |
비가비 버전의{ m } |
{ m ,? |
비가비 버전의{ m ,} |
{ m , n ? |
비가비 버전의{ m , n } |
사용 양식{
...
}
바운드. 숫자m
andn
경계 안에는 0에서 255까지 허용 값을 가진 서명되지 않은 소수 정수가 있습니다.
GreedyQuantifiers (Ares에서만 사용 가능)는 해당 정상 (와 동일한 가능성과 일치합니다.greedy) 상대방이지만 가장 많은 수의 일치보다는 가장 작은 숫자를 선호합니다. 보다섹션 9.7.3.5자세한 내용은
Quantifier는 즉시 다른 정량 자 (예 :를 따를 수 없습니다.**
유효하지 않습니다. Quantifier는 표현 또는 하위 표현을 시작하거나 따라갈 수 없습니다^
또는|
.
표 9.19. 정규 표현 제약
제약 | 설명 |
---|---|
^ |
스포츠 토토 베트맨열의 시작 부분에서 일치 |
$ |
스포츠 토토 베트맨열 끝에서 일치 |
(? = re ) |
긍정적 인 Lookahead서브 스트링이 일치하는 모든 시점에서 일치re 시작 (Ares 만 해당) |
(?! re ) |
부정적인 룩 하이드서브 스트링 일치가없는 어느 시점에서 일치re 시작 (Ares 만 해당) |
(? <= re ) |
긍정적 인 외관서브 스트링이 일치하는 모든 시점에서 일치re 끝 (Ares 만 해당) |
(? |
부정적인 외관서브 스트링 일치가없는 어느 시점에서 일치re 끝 (Ares 만 해당) |
Lookahead and Lookbehind 제약 조건을 포함 할 수 없습니다뒤로 참조(참조섹션 9.7.3.3), 그 안에있는 모든 괄호는 캡처되지 않는 것으로 간주됩니다.
A 브래킷 표현[]
. 일반적으로 목록의 단일 스포츠 토토 베트맨와 일치합니다 (그러나 아래 참조).^
, 단일 스포츠 토토 베트맨와 일치not나머지 목록에서. 목록에있는 두 스포츠 토토 베트맨가에 분리 된 경우-
53107_53222[0-9]
inASCII모든 소수점 숫자와 일치합니다. 두 가지 범위에서 종말점을 공유하는 것은 불법입니다 (예 :A-C-E
. 범위는 매우 합의 된 시퀀스 의존적이므로 휴대용 프로그램은 그들에게 의존하지 않아야합니다.
스포츠 토토 베트맨 포함]
목록에서 첫 번째 스포츠 토토 베트맨로 만드십시오 (후^
, 그것이 사용되는 경우). 문자를 포함하려면-
, 그것을 첫 번째 또는 마지막 문자 또는 범위의 두 번째 종점으로 만드십시오. 문자를 사용하려면-
범위의 첫 번째 엔드 포인트로서[.
and.]
그것을 집합 요소로 만들려면 (아래 참조). 이 문자를 제외하고는 사용을 사용하는 일부 조합[
(다음 단락 참조) 및 탈출 (ARES 만 해당), 다른 모든 특수 캐릭터는 괄호 표현식 내에서 특별한 의미를 잃습니다. 특히,\
eRE 또는 BRE 규칙을 따를 때 특별하지는 않지만 Ares에서 특별한 (탈출을 도입 함)..
브래킷 표현식, 집합 요소 (캐릭터, 단일 문자 인 것처럼 고집되는 다중 문자 시퀀스 또는 둘 중 하나에 대한 Collating-equence 이름) 내에서 동봉 된[.
and.]
해당 합의 요소의 문자 순서를 나타냅니다. 시퀀스는 브래킷 표현 목록의 단일 요소로 취급됩니다.ch
Collating Element, 그런 다음 re[[. ch.]]*c
의 첫 5 자와 일치CHCHCC
.
PostgreSQL현재 다중 문자 수집 요소를 지원하지 않습니다. 이 정보는 가능한 미래 행동을 설명합니다.
브래킷 표현식 내에서[=
and=]
is등가 클래스, 자체를 포함하여 해당 요소와 동등한 모든 Collating 요소의 문자 시퀀스에 서 있습니다. (다른 동등한 수집 요소가없는 경우, 처리는 마치 동봉 된 구분자가있는 것처럼[.
and.]
.) 예를 들어, ifo
and^
동등한 클래스의 구성원은[[= o =]]
, [[=^=]]
및[O^]
모두 동의어입니다. 동등성 클래스는 범위의 끝점이 될 수 없습니다.
브래킷 표현식 내에서,.[:
and:]
해당 클래스에 속하는 모든 스포츠 토토 베트맨 목록을 나타냅니다. 스포츠 토토 베트맨 클래스는 범위의 끝점으로 사용할 수 없습니다.posix표준이 스포츠 토토 베트맨 클래스 이름을 정의합니다.Alnum
(스포츠 토토 베트맨 및 숫자 숫자),알파
(편지),blank
(공간 및 탭),CNTRL
(제어 스포츠 토토 베트맨),숫자
(숫자 숫자),그래프
(공간을 제외한 인쇄용 스포츠 토토 베트맨),낮은
(소스포츠 토토 베트맨),인쇄
(공간을 포함한 인쇄용 문자),PANCT
(구두점),Space
(모든 공백),어퍼
(상단 문자) 및XDIGIT
(16 진수 숫자). 이 표준 문자 클래스의 동작은 일반적으로 7 비트 ASCII 세트의 문자를위한 플랫폼에서 일관됩니다.Collation일반 표현 함수 또는 연산자에 사용됩니다 (참조섹션 23.2) 또는 데이터베이스의 기본적으로LC_CTYPE
로케일 설정 (참조섹션 23.1). 비 ASCII 문자의 분류는 유사하게 이름이 지정된 로컬에서도 플랫폼마다 다를 수 있습니다.C
Locale은 이러한 클래스에 속한 ASCII 문자를 결코 고려하지 않습니다.) 이러한 표준 문자 클래스 외에도PostgreSQL정의ASCII
7 비트 ASCII 세트를 정확히 포함하는 문자 클래스.
브래킷 표현식의 두 가지 특별한 경우가 있습니다 : 브래킷 표현식[[: <:]]
and[[:> :]]
는 각각 단어의 시작과 끝에 빈 줄을 일치시키는 제약 조건입니다. 단어는 우선하거나 단어 문자가 뒤 따르는 일련의 단어 문자로 정의됩니다.Alnum
스포츠 토토 베트맨 (posix위에서 설명한 문자 클래스) 또는 밑줄. 이것은 연장이며, 호환되지만와 함께 지정하지 않습니다.posix1003.2, 다른 시스템에 휴대 할 수있는 소프트웨어에주의해서 사용해야합니다. 아래에 설명 된 제약 도피는 일반적으로 바람직하다.
탈출\
그 다음 영숫자 문자가 뒤 따릅니다. 탈출은 캐릭터 항목, 계급 속기, 제약 탈출 및 등 참조의 여러 종류로 제공됩니다.\
이후 영숫자 특성이지만 유효한 탈출을 구성하지 않는 것은 Ares에서 불법입니다. Eres에는 탈출이 없습니다 : 괄호 표현 외부, a\
그 뒤에는 영숫자 캐릭터가 그 캐릭터를 평범한 캐릭터로, 괄호 표현식 내부에\
는 일반적인 캐릭터입니다. (후자는 Eres와 Ares 사이의 실제 비 호환성 중 하나입니다.)
캐릭터 엔트리 탈출RES에서 비 인쇄 및 기타 불편한 문자를보다 쉽게 지정할 수 있도록 존재합니다. 그들은에 표시됩니다.표 9.20.
계급 속도 탈출일반적으로 사용되는 특정 스포츠 토토 베트맨 클래스에 대한 속기를 제공합니다. 그들은에 표시됩니다.표 9.21.
A 제약 탈출는 특정 조건이 충족되면 탈출로 작성된 경우 빈 문자열과 일치하는 제약 조건입니다. 그들은에 표시됩니다.표 9.22.
A 뒤로 참조 (\
n
)는 숫자로 지정된 이전 괄호로 지정된 이전 괄호와 일치하는 동일한 문자열과 일치합니다.n
(참조표 9.23). 예를 들어,([bc]) \ 1
매치BB
또는CC
하지만BC
또는CB
. 하위 표현은 전적으로 RE의 후면 참조보다 우선해야합니다.
표 9.20. 정규 표현 캐릭터 입력 탈출
탈출 | 설명 |
---|---|
\ a |
ALERT (BELL) 스포츠 토토 베트맨 C |
\ b |
c와 같이 백 스페이스 |
\ b |
BacksLash의 동의어 (\ ) Backslash 배가의 필요성을 줄이는 데 도움이됩니다 |
\ c X |
(whereX 모든 캐릭터입니다.) 저음 5 비트의 캐릭터는와 동일합니다.X , 다른 비트가 모두 0 |
\ e |
Collating-Sequence 이름이 인 캐릭터esc 033 |
\ f |
c와 같이 피드 양식 |
\ n |
Newline, C |
\ r |
캐리지 리턴, C. |
\ t |
c와 같이 수평 탭 |
\ u WXYZ |
(whereWXYZ 정확히 4 개의 16 진수 숫자입니다) vecadecimal value가있는 캐릭터0x WXYZ |
\ u stuvwxyz |
(wherestuvwxyz 정확히 8 개의 16 진수 숫자)) vecadecimal value가있는 캐릭터0x stuvwxyz |
\ V |
C와 같이 수직 탭 |
\ x HHH |
(whereHHH hexadecimal 숫자의 모든 시퀀스)) 16 진수 값이있는 문자0x HHH |
\ 0 |
가치가있는 캐릭터0 (Null Byte) |
\ xy |
(wherexy 정확히 2 개의 옥탈 자리이며뒤로 참조) 스포츠 토토 베트맨 값이있는 캐릭터0 xy |
\ xyz |
(wherexyz 정확히 3 개의 옥탈 숫자이며뒤로 참조) 스포츠 토토 베트맨 값이있는 캐릭터0 xyz |
16 진수 숫자는0
-9
, a
-f
및A
-F
. 옥탈 숫자는0
-7
.
숫자 문자 엔트리 ASCII 범위 (0–127) 이외의 값을 지정하는 숫자는 데이터베이스 인코딩에 따라 의미가 있습니다. 인코딩이 UTF-8 인 경우 탈출 값은 유니 코드 코드 포인트와 동일합니다.\ u1234
스포츠 토토 베트맨를 의미U+1234
. 다른 멀티 바이트 인코딩의 경우, 캐릭터 엔트리 탈출은 일반적으로 문자에 대한 바이트 값의 연결을 지정합니다.
캐릭터 입력 탈출은 항상 일반적인 캐릭터로 간주됩니다. 예를 들어,\ 135
is]
ASCII에서\ 135
브래킷 표현을 종료하지 않습니다.
표 9.21. 정규 표현식 클래스 속도 탈출
탈출 | 설명 |
---|---|
\ 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.22. 정규 표현 제약 제한 탈출
탈출 | 설명 |
---|---|
\ a |
문자열의 시작 부분에서만 일치합니다 (참조섹션 9.7.3.5이것이 어떻게 다른지^ ) |
\ m |
단어의 시작 부분에서만 일치 |
\ m |
단어의 끝에서만 일치 |
\ y |
단어의 시작 또는 끝에서만 일치 |
\ y |
단어의 시작 또는 끝이 아닌 지점에서만 일치합니다 |
\ z |
문자열 끝에서만 일치합니다 (참조섹션 9.7.3.5이것이 어떻게 다른지$ ) |
단어는 사양에서와 같이 정의됩니다.[[: <:]]
and[[:> :]]
위. 제약 도피는 괄호 표현 내에서 불법입니다.
표 9.23. 정규 표현 등 참조
탈출 | 설명 |
---|---|
\ m |
(wherem 는 0이 아닌 숫자입니다.m 'th subexpression |
\ MNN |
(wherem 는 0이 아닌 숫자이며NN 더 많은 숫자이고 소수점 값MNN 지금까지 볼 수있는 괄호를 캡처하는 마감 수보다 크지 않습니다.)MNN 'th subexpression |
Octal 문자 입력 탈출과 후면 참조 사이에는 고유 한 모호성이 있으며, 이는 위의 힌트를 힌트 한 바와 같이 다음 휴리스틱에 의해 해결됩니다. 주요 제로는 항상 옥탈 탈출을 나타냅니다.
위에서 설명한 주요 구문 외에도 몇 가지 특별한 형태와 기타 구문 시설이 있습니다.
RE는 두 스페셜 중 하나부터 시작할 수 있습니다감독접두사. RE가 시작되면*** :
, 나머지 RE는 다음과 같이 간주됩니다. (이것은 일반적으로에 영향을 미치지 않습니다PostgreSQL, res는 Ares로 가정되기 때문에; 그러나 ERE 또는 BRE 모드가에 지정된 경우 효과가 있습니다.플래그
REGEX 함수에 대한 매개 변수.) RE가 시작되는 경우***=
, 나머지 RE는 스포츠 토토 베트맨 그대로 스포츠 토토 베트맨열로 간주되며 모든 스포츠 토토 베트맨는 일반 스포츠 토토 베트맨로 간주됩니다.
an은 시작할 수 있습니다임베디드 옵션: 시퀀스(?
xyz
)
(wherexyz
는 하나 이상의 알파벳 문자입니다)는 나머지 RE에 영향을 미치는 옵션을 지정합니다. 이러한 옵션은 이전에 결정된 옵션을 무시합니다. 특히 Regex 연산자가 암시하는 사례 감도 동작 또는를 무시할 수 있습니다.플래그
REGEX 함수에 대한 매개 변수. 사용 가능한 옵션 스포츠 토토 베트맨는에 표시됩니다.표 9.24. 이 동일한 옵션 스포츠 토토 베트맨는에 사용됩니다.플래그
Regex 함수의 매개 변수.
표 9.24. 내장 된 편지
옵션 | 설명 |
---|---|
b |
나머지 re는 bre |
c |
Case-Ensentitive Matching (Ownerides Operator Type) |
e |
나머지 re is ere |
i |
사례 감지 일치 (참조섹션 9.7.3.5) (오퍼레이터 유형을 재정의) |
m |
역사적 동의어에 대한n |
n |
Newline-Ensensitive Matching (참조섹션 9.7.3.5) |
p |
부분 Newline에 민감한 매칭 (참조섹션 9.7.3.5) |
q |
나머지는 스포츠 토토 베트맨 그대로 (입니다.“인용”) 스포츠 토토 베트맨열, 모든 일반 스포츠 토토 베트맨 |
s |
비 뉴 라인 민감성 일치 (기본값) |
t |
타이트 구문 (기본값; 아래 참조) |
w |
역 부분 Newline-Ensentive (“이상한”) 매칭 (참조섹션 9.7.3.5) |
x |
확장 된 구문 (아래 참조) |
임베디드 옵션은에서 적용됩니다.)
시퀀스 종단. 그들은 are의 시작 부분에서만 나타날 수 있습니다 (*** :
감독이 있으면).
평소 외에도 (titg) RE 구문, 모든 스포츠 토토 베트맨가 중요한 경우가 있습니다.확장구문, 임베디드를 지정하여 사용할 수 있습니다x
옵션. 확장 된 구문에서 a 사이의 모든 문자와 마찬가지로 RE의 흰색 공간 문자는 무시됩니다.#
및 다음 Newline (또는 RE의 끝). 이것은 단락을 허용하고 복잡한 re.
흰색 공간 문자 또는#
앞서\
유지
공백 또는#
브래킷 표현식 내에서
공백 및 댓글은 다중 스포츠 토토 베트맨 기호 (예 : 내에 나타날 수 없습니다.(? :
이 목적을 위해 흰색 공간 문자는 비어, 탭, Newline 및에 속하는 모든 문자입니다.Space
캐릭터 클래스.
마지막으로, 외부 괄호 표현식, 시퀀스(?#
TTT
)
(whereTTT
a가 포함되지 않은 텍스트입니다)
)는 완전히 무시 된 주석입니다. 다시 말하지만, 이것은 다중 문자 기호의 문자 사이에서 허용되지 않습니다.(? :
. 이러한 의견은 유용한 시설보다 역사적 인 유물이며, 그 사용은 사용되지 않습니다.
없음이 metasyntax 확장의 초기이면***=
Director는 사용자의 입력이 re.가 아닌 문자 그대로 문자열로 취급 될 것을 명시했습니다.
RE가 주어진 문자열의 하나 이상의 하위 스트링과 일치 할 수있는 경우, RE는 문자열에서 가장 일찍 시작하는 것과 일치합니다. RE가 해당 시점에서 시작하여 하나 이상의 하위 문자열을 일치시킬 수 있다면, 가장 긴 일치 또는 가장 짧은 경기는 RE인지에 따라greedy또는비-그 리지.
RE가 탐욕인지 여부는 다음 규칙에 따라 결정됩니다.
대부분의 원자와 모든 제약 조건은 탐욕 속성이 없습니다 (어쨌든 가변 양의 텍스트와 일치 할 수 없기 때문에)..
RE 주위에 괄호를 추가하는 것은 탐욕을 바꾸지 않습니다.
고정 반복 Qualifier (가있는 정량화 된 원자{
m
}
또는{
m
?
)는 원자 자체와 같은 욕심 (아마도 없음)을 가지고 있습니다.
다른 정상 정량기가있는 정량화 된 원자 (포함{
m
,
n
}
withm
동일n
)는 탐욕 스럽습니다 (가장 긴 경기를 선호합니다).
비 게리 정량기가있는 정량화 된 원자 (포함{
m
,
n
?
withm
동일n
)는 비 기업 (가장 짧은 경기를 선호)입니다.
지점-즉, 최상위 수준이없는 RE|
운영자 - 탐욕 속성이있는 첫 번째 정량화 된 원자와 동일한 욕심이 있습니다.
|
운영자는 항상 탐욕 스럽습니다.
위의 규칙은 탐욕 속성을 개별 정량화 된 원자뿐만 아니라 정량화 된 원자를 포함하는 가지 및 전체 해상도와 관련이 있습니다. 그 의미는 일치하는 것이 분기 또는 전체가 가능한 가장 길거나 가장 짧은 하위 문자열과 일치하는 방식으로 이루어진다는 것입니다.전체적으로. 전체 일치의 길이가 결정되면, 특정 하위 표현과 일치하는 부분은 해당 하위 표현의 욕심 속성에 기초하여 결정되며, 하위 표현은 나중에 시작하는 것보다 우선 순위를 초래합니다..
이것이 의미하는 바의 예 :
SELLE SELECT SILLTRING ( 'XY1234Z', 'y*([0-9] 1,3)');결과 :123
하위 문자를 선택하십시오 ( 'xy1234z', 'y*? ([0-9] 1,3)');결과 :1
첫 번째 경우, RE 전체는 욕심이 많기 때문에Y*
탐욕 스럽습니다. 에서 시작할 수 있습니다.Y
Y123
. 출력은 그 부분의 괄호 나 부분입니다.123
. 두 번째 경우, 전체적으로 RE는 regreed이 아니기 때문에y*?
는 비 게리입니다. 에서 시작할 수 있습니다.Y
Y1
. 하위 표현[0-9] 1,3
탐욕 스럽지만 전체 일치 길이에 대한 결정을 변경할 수는 없습니다. 그래서 그것은 단지 일치해야합니다1
.
간단히 말해서, RE에 탐욕과 비 기화 서브 표현이 모두 포함 된 경우, 전체 일치 길이는 전체적으로 지정된 속성에 따라 가능한 한 길거나 짧은 시간입니다. 하위 표현에 할당 된 속성은 해당 일치의 양에만 영향을 미칩니다.“Eat”서로에 대해.
정량 자{1,1}
and1,1?
는 각각 서브 표현 또는 전체에서 탐욕 또는 비판을 강요하는 데 사용될 수 있습니다. 이것은 당신이 그 요소에서 추론 된 것과 다른 욕심력 속성을 갖기 위해 전체를 필요로 할 때 유용합니다.
72503_72555결과 :ABC0123,4, XYZ
작동하지 않았다 : 첫 번째.*
욕심이 많으므로“Eats”가능한 한 많이\ d+
마지막 가능한 장소에서 일치하려면 마지막 숫자입니다. 우리는 그것을 비 게리로 만들어서 그것을 고치려고 노력할 수 있습니다 :
regexp_match ( 'abc01234xyz', '(.*?) (\ d+) (.*)'); 선택결과 :abc, 0, ""
지금도 작동하지 않았기 때문에 이제는 전체적으로 RE가 비 게리이기 때문에 가능한 한 빨리 전체 일치를 종료하기 때문입니다. 우리는 RE를 전체적으로 욕심으로 강요함으로써 우리가 원하는 것을 얻을 수 있습니다 :
regexp_match ( 'abc01234xyz', '(? : (.*?) (\ d+) (.*)) 1,1');를 선택하십시오.결과 :ABC, 01234, XYZ
구성 요소의 욕심과 별도로 RE의 전체 탐욕을 제어하면 가변 길이 패턴을 처리하는 데 큰 유연성이 가능합니다.
더 길거나 짧은 일치가 무엇인지 결정하면 성냥 길이는 요소를 수집하지 않고 스포츠 토토 베트맨로 측정합니다. 빈 스포츠 토토 베트맨열은 전혀 일치하지 않는 것보다 더 오래 간주됩니다.BB*
의 세 가지 중간 스포츠 토토 베트맨와 일치ABBBC
; (주 | wee) (야간 | 기사단)
|주중
; 언제(.*).*
와 일치합니다ABC
괄호 화 된 하위 표현은 세 문자와 일치합니다. 그리고 언제(A*)*
와 일치합니다BC
전체 RE와 괄호 화 된 하위 표현이 빈 문자열과 일치합니다.
사례 독립적 일치가 지정되면 모든 사례 차이가 알파벳에서 사라진 것처럼 효과가 있습니다. 여러 경우에 존재하는 알파벳이 괄호 표현 외부에서 일반적인 문자로 나타나면, 예를 들어 두 경우를 포함하는 브래킷 표현으로 효과적으로 변형됩니다.x
[xx]
. 브래킷 표현식 내부에 나타나면, 모든 케이스 대응 물이 브래킷 표현식에 추가됩니다 (예 :[x]
[xx]
and[^x]
[^xx]
.
Newline에 민감한 매칭이 지정된 경우.
및 괄호 사용^
Newline 캐릭터와 일치하지 않을 것입니다 (따라서 일치는 명시 적으로 배열하지 않으면 Newlines를 교차하지 않습니다) 및.^
and$
는 문자열의 시작과 끝에서 각각 일치하는 것 외에도 Newline 이후 및 각각 빈 문자열과 일치합니다. 하지만 탈출\ a
and\ z
문자열의 시작 또는 끝 계속전용.
부분 Newline에 민감한 매칭이 지정되면 영향을 미칩니다.
Newline에 민감한 매칭과 같은 브래킷 표현식이지만^
and$
.
역 부분 Newline에 민감한 매칭이 지정되면 영향을 미칩니다^
and$
Newline에 민감한 매칭과 마찬가지로.
및 브래킷 표현식. 이것은 그다지 유용하지 않지만 대칭을 위해 제공됩니다.
이 구현에서 RES 길이에 특정 제한이 부과되지 않습니다. 그러나 POSIX 준수 구현은 그러한 해당을 수용하는 것을 거부 할 수 있으므로 휴대 성이 높은 프로그램은 256 바이트 이상을 사용해서는 안됩니다.
실제로 Posix Eres와 실제로 양립 할 수없는 Ares의 유일한 특징은입니다.\
브래킷 표현식 내에서 특별한 중요성을 잃지 않습니다. 다른 모든 것은 불법이거나 Posix Eres에서 정의되지 않았거나 지정되지 않은 효과를 가진 구문을 사용하는 기능입니다.***
감독의 구문 마찬가지로 Bres와 Eres의 Posix 구문 외부에 있습니다.
많은 ARE 확장은 Perl에서 빌려 왔지만 일부는 청소로 변경되었으며 일부 Perl 확장은 존재하지 않습니다. 주목할만한 비 호환성\ b
, \ b
, 후행 뉴 라인에 대한 특별한 치료 부족, Newline-insensitive 매칭의 영향을받는 것들에 보완 된 브래킷 표현의 추가, Lookahead/Lookbehind 제약의 괄호 및 후면 참조에 대한 제한 사항, 그리고 가장 긴/가장 짧은 매칭 (첫 번째 매칭)..
ares와 ERE 구문 사이에는 7.4 이전 릴리스 사이에 두 가지 중요한 비 호환성이 존재합니다.PostgreSQL:
in Ares,\
이후 영숫자 문자는 탈출 또는 오류이며, 이전 릴리스에서는 영숫자를 쓰는 또 다른 방법이었습니다. 이전 릴리스에 그러한 시퀀스를 작성할 이유가 없기 때문에 문제가되지 않아야합니다.
in Ares,\
내에서 특별한 캐릭터로 남아[]
, 그래서 스포츠 토토 베트맨 그대로\
브래킷 표현식 내에 작성해야\\
.
Bres는 여러 측면에서 ERE와 다릅니다. Bres,|
, +
및?
는 일반적인 스포츠 토토 베트맨이며 해당 기능과 동등한 것은 없습니다. 경계의 구분자는\
and\
with{
and}
그 자체로 평범한 스포츠 토토 베트맨. 중첩 하위 표현의 괄호는입니다.\ (
and\)
with(
and)
그 자체로 평범한 스포츠 토토 베트맨.^
rE의 시작 또는 괄호가있는 서브 표현의 시작을 제외하고는 일반적인 문자입니다.$
*
RE의 시작 부분 또는 괄호로 된 하위 표현의 시작 부분에 나타나면 일반적인 캐릭터입니다 (가능한 선두 후^
). 마지막으로 Single-Figit Back 참조를 사용할 수 있으며\ <
and\>
동의어입니다[[: <:]]
and[[:> :]]
각각; Bres에서는 다른 탈출구가 없습니다.
Like_Regex
)SQL : 2008 이후 SQL 표준에는 A가 포함됩니다Like_Regex
XQuery 정규식 표준에 따라 패턴 일치를 수행하는 연산자PostgreSQL아직이 연산자를 구현하지는 않지만를 사용하여 매우 유사한 동작을 얻을 수 있습니다.regexp_match ()
함수, XQuery 정규 표현식이 위에서 설명한 IS 구문에 매우 가깝기 때문에
기존 POSIX 기반 일반 표현 기능과 XQuery 정규 표현의 주목할만한 차이점은 다음과 같습니다.
XQuery 문자 클래스 뺄셈은 지원되지 않습니다. 이 기능의 예는 영어 자음 만 일치하기 위해 다음을 사용합니다.[a-z- [aeiou]]
.
XQuery 스포츠 토토 베트맨 클래스 속기\ c
, \ c
, \ i
및\ i
지원되지 않습니다.
XQuery 스포츠 토토 베트맨 클래스 요소 사용\ p unicodeproperty
또는 역\ p unicodeproperty
지원되지 않습니다.
Posix는와 같은 스포츠 토토 베트맨 클래스 해석\ w
(참조표 9.21) 우세한 로케일에 따라 (aCollate
연산자 또는 기능에 대한 조항). XQuery는 유니 코드 문자 속성을 참조하여 이러한 클래스를 지정하므로 동등한 동작은 유니 코드 규칙을 따르는 로케일로만 얻습니다..
SQL 표준 (XQuery 자체가 아님)은 더 많은 변형을 제공하려고 시도합니다“Newline”보다 posix보다. 위에서 설명한 Newline에 민감한 매칭 옵션은 ASCII NL ( 만 고려합니다.\ n
) Newline이지만 SQL은 Cr (를 취급하게 할 것입니다.\ r
), crlf (\ r \ n
) (Wind 특히,.
and\ s
카운트\ r \ n
SQL에 따르면 하나의 문자로서 하나의 문자로
에 설명 된 캐릭터 진입 탈출의표 9.20, XQuery 지원 만 해당\ n
, \ r
및\ t
.
XQuery는 지원하지 않습니다[:
브래킷 표현식 내 문자 클래스에 대한 구문.이름
:]
XQuery는 Lookahead 또는 Lookbehind 제약 조건이 없거나에 설명 된 제약 조건이 빠져 나옵니다.표 9.22.
metasyntax 양식에 설명 된섹션 9.7.3.4XQuery에는 존재하지 않습니다.
XQuery에 의해 정의 된 정규식 플래그 문자는 POSIX ( 옵션 문자와 관련이 없지만 관련이 없습니다.표 9.24). 동안i
andq
옵션은 동일하게 행동하고 다른 사람들은 그렇지 않습니다 :
XQuery 'ss
(Newline과 일치하도록 DOT가 허용) 및m
(허용^
and$
Newlines와 일치하려면 깃발은 Posix와 동일한 동작에 액세스 할 수 있습니다n
, p
andw
깃발이지만notposix의 동작 일치s
andm
플래그. 특히 Dot-Matches-Newline은 POSIX의 기본 동작이지만 XQuery는 아닙니다.
XQuery 'sx
(패턴의 공백 무시) 플래그는 POSIX의 확장 모드 플래그와 눈에 띄게 다릅니다. POSIX 'sx
플래그도 허용#
패턴에서 주석을 시작하려면 Backslash 이후에 Whitespace 문자를 무시하지 않습니다.
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면