패턴 메이저 토토 사이트에 대한 두 가지 접근 방식이 제공됩니다. 으로포스트그레: 그SQL 좋아요연산자와POSIX-스타일 정규식.
팁:패턴 메이저 토토 사이트가 필요한 경우 이 이상으로 패턴 기반 대체를 원하거나 번역을 하려면 사용자 정의 함수를 작성하는 것을 고려해 보세요. Perl 또는 Tcl.
문자열좋아요패턴 [탈출이스케이프 문자 ] 문자열좋아하지 않음패턴 [탈출이스케이프 문자 ]
모든패턴세트를 정의합니다 문자열의.좋아요표현 다음과 같은 경우 true를 반환합니다.문자열이다 다음으로 표시되는 문자열 집합에 포함되어 있습니다.패턴. (예상대로,좋아하지 않음다음의 경우 표현식이 false를 반환합니다.좋아요은 true를 반환하고 그 반대도 마찬가지입니다. 안 동등한 표현은아님 (문자열좋아요패턴).)
만약패턴포함하지 않음 퍼센트 기호 또는 밑줄을 사용한 경우 패턴은 다음을 나타냅니다. 문자열 자체; 그 경우에는좋아요동등 연산자처럼 작동합니다. 밑줄(_) in패턴은 모든 단일 문자(일치)를 나타냅니다. 퍼센트 기호 (%)은 0개 이상의 문자열과 일치합니다. 문자.
좋아요패턴 일치는 항상 포함됩니다. 전체 문자열. 문자열 내의 어느 위치에서나 패턴을 일치시키려면, 따라서 패턴은 퍼센트로 시작하고 끝나야 합니다. 서명합니다.
문자열 없이 밑줄이나 퍼센트 기호를 일치시키려면 다른 문자와 일치, 해당 문자는패턴앞에 다음이 와야 합니다. 탈출 문자. 기본 이스케이프 문자는 백슬래시입니다. 그러나 다음을 사용하여 다른 것을 선택할 수 있습니다.탈출절. 이스케이프 문자와 일치시키려면 자체에는 두 개의 이스케이프 문자를 작성합니다.
백슬래시에는 이미 특별한 의미가 있습니다. 문자열 리터럴을 포함하는 패턴 상수를 작성하려면 백슬래시 쿼리에 두 개의 백슬래시를 써야 합니다. 당신은 할 수 있습니다 다음과 같이 다른 이스케이프 문자를 선택하여 이를 방지하세요.탈출.
키워드좋아요사용 가능 대신에좋아요성냥을 만들기 위해 활성 로케일에 따라 대소문자를 구분하지 않습니다. 이것은 없습니다SQL표준이지만 a포스트그레스확장.
운영자~~다음과 동일함좋아요및~~*다음에 해당함좋아요. 또한 있습니다!~~그리고!~~*연산자 그 표현은좋아하지 않음그리고닮지 않음. 이것들도 모두포스트그레-특정.
표 4-8. 정규식 일치 운영자
| 운영자 | 설명 | 예 |
|---|---|---|
| ~ | 정규 메이저 토토 사이트 표현식, 대소문자 구분 | '토마스' ~ '.*토마스.*' |
| ~* | 정규 메이저 토토 사이트 표현식, 대소문자를 구분하지 않음 | '토마스' ~* '.*토마스.*' |
| !~ | 일반 메이저 토토 사이트하지 않음 표현식, 대소문자 구분 | '토마스' !~ '.*토마스.*' |
| !~* | 일반 메이저 토토 사이트하지 않음 표현식, 대소문자를 구분하지 않음 | '토마스'!~* '.*바딤.*' |
POSIX정규식 패턴 일치를 위한 더 강력한 수단을 제공합니다.좋아요함수. 다음과 같은 많은 Unix 도구 와 같이이그레프, sed, 또는익다음과 같은 패턴 일치 언어를 사용하세요. 여기에 설명된 것과 유사합니다.
정규 표현식은 다음과 같은 문자 시퀀스입니다. 문자열 집합의 축약된 정의(a일반 세트). 문자열은 다음과 일치한다고 합니다. 정규 세트의 구성원인 경우 정규 표현식 정규식으로 설명됩니다. 마찬가지로좋아요, 패턴 문자가 문자열과 일치함 특수 문자가 아닌 이상 정확히 문자를 입력하세요. 정규식 언어 --- 하지만 정규식은 와 다른 특수문자좋아요그렇습니다. 달리좋아요패턴, 정규 표현식이 허용됩니다. 일반 문자열이 아닌 이상 문자열 내의 어느 위치에서나 일치합니다. 표현식이 명시적으로 시작 또는 끝에 고정되어 있습니다. 문자열.
정규식("RE"s), 에서 정의됨POSIX1003.2, 들어와 두 가지 형태: 최신 RE(대략적인 RE)이그레프; 1003.2에서는 다음을 호출합니다."확장"RE) 및 더 이상 사용되지 않는 RE(대략 의에드; 1003.2 "기본"RE).포스트그레현대적인 형식을 구현합니다.
A(현대) RE는 비어 있지 않은 하나 이상입니다.지점, 구분|. 다음 중 하나와 일치하는 항목과 일치합니다. 가지.
브랜치는 하나 이상입니다조각, 연결되었습니다. 첫 번째 일치 항목과 일치하고 그 다음에는 일치 항목이 일치합니다. 두 번째 경기 등
조각은원자아마도 그 뒤에 단일*, +, ?, 또는바운드. 원자 뒤에는*다음과 일치하는 0개 이상의 시퀀스와 일치합니다. 원자. 원자 뒤에는+일치 1개 이상의 원자 일치 시퀀스. 원자 뒤에는?0 또는 1개의 일치 항목 시퀀스와 일치합니다. 원자의.
A 바운드is{부호 없는 십진수 정수가 뒤에 옵니다. 아마도 그 뒤에는,아마도 그 뒤에 또 다른 부호 없는 10진수 정수가 오고, 항상 뒤에 옵니다 으로}. 정수는 0 사이에 있어야 합니다. 그리고RE_DUP_MAX(255) 포함 및 두 개가 있는 경우 첫 번째가 두 번째를 초과할 수 없습니다. 하나의 정수를 포함하는 경계가 뒤에 오는 원자i그리고 쉼표는 다음과 일치하지 않습니다. 정확히i원자와 일치합니다. 하나의 정수를 포함하는 경계가 뒤에 오는 원자i그리고 쉼표는 다음의 순서와 일치합니다.i또는 그 이상의 원자 일치. 두 개의 정수를 포함하는 경계가 뒤에 오는 원자i그리고j다음의 시퀀스와 일치함i통해j(포함) 일치 항목: 원자.
참고:반복 연산자(?, *, +또는 경계)는 다른 경계를 따를 수 없습니다. 반복 연산자. 반복 연산자는 다음을 시작할 수 없습니다. 표현식 또는 하위 표현식 또는 따르기^또는|.
안원자정규 표현식입니다. 에 포함됨()(메이저 토토 사이트 항목과 메이저 토토 사이트 정규식), 빈 집합()(널 문자열과 일치), a괄호 표현식(아래 참조),.(모든 단일 문자와 일치),^(시작 부분의 null 문자열과 일치 입력 문자열),$(일치 입력 문자열 끝에 null 문자열이 있음), a\다음에 문자 중 하나가 나옵니다^.[$()|*+?{\(해당 문자와 일치하는 것은 다음과 같습니다. 일반 문자), a\팔로우함 다른 문자로(해당 문자와 메이저 토토 사이트하는 일반 문자, 마치\있었다 존재하지 않음) 또는 다른 문자가 없는 단일 문자 의미(해당 문자와 일치) 갑{뒤에 숫자 이외의 문자가 옵니다. 바운드의 시작이 아닌 일반 문자입니다. 그것은 RE를 종료하는 것은 불법입니다.\.
백슬래시(\) 이미 문자열 리터럴에서는 특별한 의미를 가지므로 패턴을 작성하려면 백슬래시가 포함된 상수에는 두 개를 써야 합니다. 쿼리에 백슬래시가 있습니다.
A 괄호 표현식다음 목록입니다 안에 포함된 문자[]. 그것은 일반적으로 목록의 단일 문자와 일치합니다(아래 참조). 만약에 목록은 다음으로 시작됩니다.^, 무엇이든 메이저 토토 사이트합니다. 목록의 나머지 부분에 포함되지 않은 단일 문자(아래 참조)입니다. 목록의 두 문자가로 구분된 경우-, 이는 전체 범위에 대한 약어입니다. 조합에서 해당 두 문자(포함) 사이의 문자 시퀀스(예:[0-9]inASCII모든 십진수와 일치합니다. 불법입니다 두 범위가 끝점을 공유하는 경우, 예:a-c-e. 범위는 매우 배열 순서에 따라 달라지며 이식 가능한 프로그램은 다음과 같습니다. 그들에게 의존하지 마십시오.
리터럴을 포함하려면]목록에서, 그것을 첫 번째 문자로 만드십시오 (가능한 다음)^). 리터럴을 포함하려면-, 첫 번째 또는 마지막 문자로 지정하거나 범위의 두 번째 끝점입니다. 리터럴을 사용하려면-범위의 첫 번째 끝점으로 묶습니다. 에서[.그리고.]조합 요소로 만듭니다(아래 참조). 예외적으로 이들 중 일부 조합을 사용하여[(다음 단락 참조), 다음을 포함한 기타 모든 특수 문자\, 특별한 의미를 잃습니다. 대괄호 표현식 내에서.
괄호 표현식 내에서 조합 요소( 문자, 마치 문자처럼 조합되는 다중 문자 시퀀스 단일 문자이거나 조합 시퀀스 이름이었습니다. 둘 중 하나) 안에 포함됨[.그리고.]은 그 문자의 순서를 나타냅니다. 대조 요소. 시퀀스는 단일 요소입니다. 대괄호 표현식의 목록. 다음을 포함하는 대괄호 표현식 따라서 다중 문자 조합 요소는 둘 이상의 문자와 일치할 수 있습니다. 문자, 예를 들어 조합 순서에 a가 포함된 경우채널조합 요소, 그 다음 RE[[.ch.]]*c다음의 처음 5개 문자와 일치합니다.chchcc.
괄호 표현식 내에서 조합 요소는[=그리고=]이다 문자 시퀀스를 나타내는 등가 클래스 다음을 포함하여 해당 요소와 동등한 모든 조합 요소 그 자체. (다른 동등한 조합 요소가 없는 경우, 처리는 둘러싸는 구분 기호가 다음과 같습니다.[.그리고.].) 예를 들어, 만약o그리고^동등한 클래스의 멤버라면[[=o=]], [[=^=]]및[o^]있습니다 모두 동의어. 동등 클래스는 다음의 엔드포인트가 될 수 없습니다. 범위.
괄호 표현식 내에서 문자 클래스의 이름 에 포함됨[:그리고:]모든 문자 목록을 나타냅니다. 그 클래스에 속합니다. 표준 문자 클래스 이름은 다음과 같습니다.알넘, 알파, 공백, cntrl, 자리, 그래프, 하위, 인쇄, 점수, 공간, 상위, xdigit. 이는 캐릭터 클래스를 나타냅니다. 에서 정의됨ctype. 로케일이 제공할 수 있음 다른 사람. 문자 클래스는 엔드포인트로 사용될 수 없습니다. 범위.
괄호 표현식에는 두 가지 특별한 경우가 있습니다: 대괄호 표현식[[:<:]]그리고[[::]]다음의 null 문자열과 일치합니다. 각각 단어의 시작과 끝. 단어가 정의되어 있습니다 앞에도 없고 앞에도 없는 일련의 단어 문자로 표시됩니다. 그 뒤에 단어 문자가 옵니다. 단어 문자는 alnum입니다. 문자(다음으로 정의됨)ctype) 또는 밑줄. 이것은 호환되지만 지정되지 않은 확장입니다. POSIX 1003.2, 소프트웨어에서는 주의해서 사용해야 합니다. 다른 시스템으로 이식할 수 있도록 고안되었습니다.
RE가 하나 이상의 하위 문자열과 일치할 수 있는 경우 주어진 문자열에서 RE는 가장 먼저 시작하는 문자열과 일치합니다. 문자열. RE가 둘 이상의 하위 문자열과 일치할 수 있는 경우 그 시점부터 시작하여 가장 오랫동안 일치합니다. 하위 표현식 또한 가능한 가장 긴 부분 문자열과도 일치합니다. 전체 경기가 가능한 한 길어야 한다는 제약이 있습니다. RE에서 더 일찍 시작하는 하위 표현식이 우선순위를 갖습니다. 나중에 시작하는 것. 따라서 더 높은 수준의 하위 표현식은 하위 수준 구성 요소보다 우선 순위를 갖습니다. 하위 표현식.
일치 길이는 조합이 아닌 문자 단위로 측정됩니다. 요소. null 문자열은 일치 항목이 없는 것보다 긴 것으로 간주됩니다. 모두. 예를 들어,bb*메이저 토토 사이트 의 중간 문자 3개abbbc, (wee|week)(knights|nights)모두 메이저 토토 사이트 10자주중, 언제(.*).*다음과 일치함abc괄호 안의 하위 표현식은 모두 일치합니다. 세 글자, 그리고 언제(a*)*이다 메이저 토토 사이트bc모두 RE 전체 괄호로 묶인 하위 표현식은 null 문자열과 일치합니다.
대소문자 독립적 일치가 지정되면 효과는 다음과 같습니다. 마치 모든 경우의 구별이 사라진 것처럼. 알파벳. 여러 경우에 존재하는 알파벳인 경우 대괄호 표현식 외부의 일반 문자로 나타납니다. 효과적으로 대괄호 표현식으로 변환됩니다. 두 가지 경우를 모두 포함합니다. 예:x되다[xX]. 괄호 안에 나타날 때 표현식에 대응하는 모든 케이스가 표현식에 추가됩니다. 대괄호 표현식(예:)[x]되다[xX]그리고[^x]되다[^xX].
RE 길이에는 특별한 제한이 없습니다. 메모리가 제한되어 있는 한. 메모리 사용량은 대략 RE 크기는 선형적이며 RE 복잡성에 거의 둔감합니다. 제한된 반복을 제외하고. 제한된 반복은 시간과 비용이 많이 드는 매크로 확장을 통해 구현됩니다. 개수가 크거나 제한된 반복이 중첩된 경우 공간입니다. 안 RE는 다음과 같습니다.((((a1,100)1,100)1,100)1,100)1,100(결국) 거의 모든 기존 시스템을 스왑 없이 실행하게 됩니다. 공간.[1]
| [1] |
이것은 1994년에 작성되었습니다. 주의하세요. 숫자는 아마도 변경되었으나 문제가 지속됩니다. |