TR1 Regular Expressions
이 항목에서는 TR1 지원 되는 다양 한 정규식 엔진의 문법을 설명 합니다.
항목 내용
정규 표현식 문법
문법 요약
자세한 내용은 의미
일치 하는 및 검색
형식 플래그
정규 표현식 문법
요소
요소의 다음 중 하나일 수 있습니다.
일반 문자 는 대상 시퀀스에 동일한 문자를 나타냅니다.
A 와일드 카드 문자 '.'은 대상 시퀀스에 새 행을 제외한 모든 문자를 찾습니다.
A 대괄호로 묶은 식 폼의 "expr", 일치 하는 문자 또는 데이터 정렬 요소 집합 식으로 정의 되는 대상 시퀀스에서expr, 또는 폼의 "[^expr"에 일치 하는 문자 또는 데이터 정렬 요소 식에 의해 정의 된 집합에 없는 대상 시퀀스에서expr.
식 expr 다음 항목의 조합이 포함 될 수 있습니다.
개별 문자입니다.문자 집합에 의해 정의 추가 expr.
A 문자 범위 폼의 "ch1-ch2".닫힌 사이의 값으로 표현 되는 문자를 추가 ch1, ch2 집합에 정의 된expr.
A 문자 클래스 폼의 "[:name:]".문자 명명 된 클래스에 의해 정의 된 집합에 추가 expr.
동급 클래스 폼의 "[=elt=]".정렬 요소를 해당 하는 추가 elt 에 의해 정의 된 집합 expr.
A 정렬 기호 폼의 "[.elt.]".데이터 정렬 요소 추가 elt 에 의해 정의 된 집합 expr.
앵커.앵커 ' ^'; 대상 시퀀스의 시작 부분을 찾습니다 앵커 '$' 대상 시퀀스의 끝과 일치 합니다.
A 캡처 그룹 폼의 "( 부분식 )", 또는 "\ ( 부분식 \)"에서 BRE 및 grep, 일치 하는 패턴 구분 기호 사이 일치 하는 대상 시퀀스 문자 시퀀스입니다.
- Identity 이스케이프 폼의 "\k", 일치 하는 문자 k 대상 시퀀스에서입니다.
예를 들면 다음과 같습니다.
대상 시퀀스 "a" 일치 "의" 하지만 대상 시퀀스 "B", "b" 또는 "c"와 일치 하지 않습니다.
"." 모든 대상 시퀀스를 "a", "B" 일치 "b" 및 "c"입니다.
"[b-z]"와 일치 하는 대상 시퀀스 "b" 및 "c" 하지만 대상 시퀀스를 일치 하지 않는 경우 "a" 나 "B" 합니다.
"[: 낮은:]" 대상 시퀀스에 "a", "b"와 일치 하 고 "c" 하지만 대상 시퀀스 "B"와 일치 하지 않습니다.
"(a)" 일치 하는 대상 시퀀스 "를" 하 고 동료 그룹 1 subsequence와 "a", 있지만 대상 시퀀스 "B", "b" 또는 "c"와 일치 하지 않습니다.
에 ECMAScript, BRE, 및 grep, 요소가 될 수도 있습니다에 참조 백업 폼의 "\dd", 어디 dd N에서 n 번째 일치 하는 문자 시퀀스와 동일 대상 시퀀스의 문자 시퀀스와 일치 하는 10 진수 값을 나타내는 캡처 그룹.예를 들어, 초기 시퀀스의 첫 번째과 유일한 캡처 그룹 일치 하기 때문에 대상 시퀀스 "aa" "\ 1 (a)"를 찾습니다 "a" 그리고 다음 \ 1와 최종 시퀀스 "a".
ECMAScript, 요소가 다음 중 하나가 될 수도 있습니다.
A 캡처 그룹 양식 "(?: 부분식 )"입니다.대상 시퀀스 패턴 구분 기호 사이 일치 하는 문자 시퀀스와 일치 합니다.
제한 된 파일 형식 이스케이프 "\f", "\n", "\r", "\t" 또는 "\v"입니다.이 폼 피드, 줄 바꿈, 캐리지 리턴, 가로 탭 및 세로 탭을 각각 대상 시퀀스에 일치 합니다.
A 양수 어설션 양식 "(? = 부분식 )"입니다.패턴의 구분 기호 사이 일치 하는 있지만 대상 시퀀스에 일치 하는 항목 위치를 변경할 대상 시퀀스의 문자에 해당 합니다.
A 음 어설션 양식 "(?부분식 ) "입니다.문자 사이의 구분 기호를 패턴 일치 하지 않고 대상 시퀀스에 일치 하는 항목 위치를 변경할 대상 시퀀스에 해당 합니다.
A 16 진수 이스케이프 시퀀스 양식 "\xhh".대상 시퀀스 두 16 진수 형식으로 표시 되는 문자가 일치 hh.
A 유니코드 이스케이프 시퀀스 양식 "\uhhhh".문자 4 자리 16 진수에서 표현 된 대상 시퀀스에서 일치 hhhh.
A 이스케이프 시퀀스 제어 양식 "\ck".문자에서 이름이 지정 된 제어 문자를 찾습니다 k.
A 단어 경계를 어설션 "\b" 양식입니다.대상 시퀀스에서 현재 위치 바로 뒤에 입력 하면 일치 하는 단어 경계.
A 부정적인 단어 경계를 어설션 "\B" 양식입니다.대상 시퀀스에서 현재 위치가 없습니다 바로 뒤에 있을 때 일치 하는 단어 경계.
A dsw 문자 이스케이프 양식 "\d" "\D" "\s", "\S", "\w", "\W"입니다.문자 클래스의 약식 이름을 제공합니다.
예를 들면 다음과 같습니다.
"(?:a)"의 대상에 해당 "a", 하지만 "(?:a) \ 1" 캡처 그룹 1 하지 않았습니다 때문에 올바르지 않습니다.
"(?=a)는" 대상 시퀀스 일치 "a" 합니다.양수 assert는 초기에 해당 "a" 대상 시퀀스 및 최종 처음 연속 "a" 정규식에서 일치 대상 시퀀스에서 "a" 합니다.
"(?!a)를 "대상 시퀀스와 일치 하지 않습니다"a"합니다.
"a\b." 일치 하는 대상 시퀀스 "여 ~", 대상 시퀀스 "ab"는 일치 하지 않지만.
"a\B." 대상 시퀀스 "ab"와 일치 하지만 대상 시퀀스를 일치 하지 않습니다 "는 ~".
awk, 요소가 다음 중 하나가 될 수도 있습니다.
A 파일 형식 이스케이프 "\\", "\a", "\b", "\f", "\n", "\r", "\t" 또는 "\v"입니다.이러한 백슬래시, 경고, 백스페이스, 용지 공급, 줄 바꿈, 캐리지 리턴, 가로 탭 및 세로 탭을 각각 대상 시퀀스에 일치합니다.
8 진수 이스케이프 시퀀스 폼의 "\ooo".표현인가 하나, 둘 또는 세 개의 8 진수 표현 되는 값은 대상 시퀀스를 찾습니다 ooo.
반복
이외의 요소는 양수 어설션a 음 어설션, 나는 앵커 반복 수에 따를 수 있습니다.가장 일반적인 종류의 반복 횟수는 형태는 "{min,max}", 또는 "\ {min,max\}"에서 BRE 및 grep.이러한 형태의 반복 횟수로에 나오는 요소와 일치 적어도 min 없음 및 연속적으로 발생 이상 max 의 요소와 일치 하는 일련의 연속적으로 발생 합니다.예를 들어 "{2, 3}" 대상 시퀀스 "aa"와 "aaa" 대상 시퀀스를 찾습니다 있지만 시퀀스 "a" 또는 대상 시퀀스 "aaaa" 대상이 없습니다.
반복 횟수 다음 형식 중 하나를 사용할 수도 있습니다.
"{min}", or "\{min\}" in BRE and grep.Equivalent to "{min,min}".
"{min,}", or "\{min,\}" in BRE and grep.에 해당 하는 "{min, 제한 없음}"입니다.
"*".해당 "{0, 제한 없음된}" 합니다.
예를 들면 다음과 같습니다.
대상 시퀀스 "aaa"이 "a" 또는 "{2}" 대상 시퀀스 "aa" 하지만 대상 시퀀스 일치합니다.
{2,}"" a "aa" 대상 시퀀스, 대상 시퀀스 "aaa"와, 일치 하지만 대상 시퀀스와 일치 하지 않습니다 "a" 합니다.
"는 *" 대상 시퀀스에 맞는 "", 대상 시퀀스 "a", 대상 시퀀스 "aa" 하는 등.
제외 하 고 모든 문법에 대 한 BRE 및 grep, 또한 반복 횟수 다음 형식 중 하나로 사용할 수 있습니다.
"?".0, 1 "{1}"에 해당 하 는입니다.
"+".해당 "{1, 제한 없음된}" 합니다.
예를 들면 다음과 같습니다.
대상 시퀀스 "에?" 일치 "" 및 대상 시퀀스 "a" 하지만 대상 시퀀스 "aa".
"a +" 일치 하는 대상 시퀀스 "a", 대상 시퀀스 "aa"와, 하지만 대상 시퀀스 "".
ECMAScript, 문자 반복 횟수의 모든 형태를 따를 수 있습니다 '?'는 지정 된 non-greedy 반복.
연결 연산
정규식 요소와 관계 없이 반복 계산, 양식 긴 정규식에 연결할 수 있습니다.결과 식의 개별 요소에 일치 하는 시퀀스를 연결한 대상 시퀀스를 찾습니다.예를 들어, "a {2, 3} b" 대상 시퀀스 "aab" 및 "aaab" 대상 시퀀스 일치 하지만 대상 시퀀스 "ab" 또는 "aaaab" 대상 시퀀스와 일치 하지 않습니다.
교체
제외한 모든 정규 표현식 문법에서 BRE 및 grep, 연결 된 정규식 문자 앞 수 ' |' 다른 정규 표현식을 서로 연결 하 고 있습니다.이런이 방식으로 원하는 만큼 연결 된 정규식을 결합할 수 있습니다.이 경우 결과 식은 하나 이상의 연결 된 정규식과 일치 하는 대상 해당 합니다.
하나 이상의 연결 된 정규식은 대상 시퀀스 일치 하면 ECMAScript 문자 시퀀스와 일치 하는 첫 번째 연결 된 정규식의 선택 (처음 일치). 정규 표현식 문법 달성 하는 것을 선택은 가장 긴 일치.예를 들어, "ab|cd" 대상 시퀀스 "ab" 및 "cd" 대상 시퀀스 일치 하지만 대상 시퀀스 "abd" 또는 "acd" 대상 시퀀스와 일치 하지 않습니다.
grep 및 egrep, 줄 바꿈 문자 ('\n')를 사용 하 여 alternations 구분할 수 있습니다.
부분식
BRE 및 grep, 부분식을 연결한 것입니다.다른 정규 표현식 문법에서 부분식을 교체 됩니다.
문법 요약
다음 표에서 여 TR1 제공 다양 한 정규 표현식 문법에서 사용할 수 있는 기능이 요약 되어 있습니다.
요소 |
BRE |
여기를 봐 |
ECMA |
grep |
egrep |
awk |
---|---|---|---|---|---|---|
교체를 사용 하 여 ' |' |
+ |
+ |
+ |
+ |
||
'\n'을 사용 하 여 선택 |
+ |
+ |
||||
앵커 |
+ |
+ |
+ |
+ |
+ |
+ |
역참조 |
+ |
+ |
+ |
|||
대괄호로 묶은 식 |
+ |
+ |
+ |
+ |
+ |
+ |
"()"를 사용 하 여 캡처 그룹 |
+ |
+ |
+ |
+ |
||
캡처 그룹을 사용 하 여 "\ (\)" |
+ |
+ |
||||
이스케이프 시퀀스 제어 |
+ |
|||||
dsw 문자 이스케이프 |
+ |
|||||
파일 형식 이스케이프 |
+ |
+ |
||||
16 진수 이스케이프 시퀀스 |
+ |
|||||
identity 이스케이프 |
+ |
+ |
+ |
+ |
+ |
+ |
음수 어설션 |
+ |
|||||
부정적인 단어 경계 어설션 |
+ |
|||||
캡처 그룹 |
+ |
|||||
non-greedy 반복 |
+ |
|||||
8 진수 이스케이프 시퀀스 |
+ |
|||||
일반 문자 |
+ |
+ |
+ |
+ |
+ |
+ |
양수 어설션 |
+ |
|||||
"{}"를 사용 하 여 반복 |
+ |
+ |
+ |
+ |
||
반복을 사용 하 여 "\ {\}" |
+ |
+ |
||||
반복을 사용 하 여 ' *' |
+ |
+ |
+ |
+ |
+ |
+ |
반복을 사용 하 여 '?' 및 '+' |
+ |
+ |
+ |
+ |
||
유니코드 이스케이프 시퀀스 |
+ |
|||||
와일드 카드 문자 |
+ |
+ |
+ |
+ |
+ |
+ |
단어 경계 어설션 |
+ |
자세한 내용은 의미
앵커
앵커 없는 문자 대상 문자열에 있는 위치를 찾습니다.A ' ^' 대상 문자열의 시작 부분이 일치 하는 '$' 대상 문자열의 끝과 일치 합니다.
역참조
백/N 10 진수 값으로 뒤에 백슬래시를 말합니다.N 번째의 내용을 일치 캡처 그룹.N 값의 뒷면 참조 앞에 나올 캡처 그룹은 0 이어야 합니다.BRE 및 grep, N 값의 백슬래시 다음에 오는 십진수 숫자로 결정 됩니다.ECMAScript, N 값의 바로 뒤에 백슬래시 모든의 진수가 결정 됩니다.따라서에서 BRE 및 grep, 정규식 캡처 그룹을 10 개 이상 있는 경우에 두 개 이상의 9 절대로 N 값입니다.ECMAScript, N의 값이 제한 되었는지.
예를 들면 다음과 같습니다.
"((a+) (b +))(c+) 묶은" "aabbbcbbb" 대상 시퀀스를 찾습니다.역참조 "묶은" "(b+), 세 번째 캡처 그룹의 텍스트에 맞는"입니다.대상 시퀀스 "aabbbcbb"는 일치 하지 않습니다.
"\2 (a)" 올바르지 않습니다.
"\10 (b (((((((((a))))))))))"가 다른 의미에서 BRE 및 ECMAScript.BRE \ "1"은 역참조입니다.첫 번째 캡처 그룹의 내용을 다시 참조와 일치 ("(b"로 시작 하 고 끝나는 마지막으로 하나, ")" 및 역참조 하기 전에 함께 제공) 및 최종 ' 0 '일반 ' 0 문자'.ECMAScript, "\10"은 역참조입니다.10 번째 캡처 그룹 즉, 가장 안쪽의 한을 찾습니다.
대괄호로 묶은 식
대괄호로 묶은 식의 문자 집합을 정의 하 고 요소 정렬.대괄호로 묶은 식 문자로 시작 시기 ' ^' 대상 시퀀스의 현재 문자 집합의 이름은 일치 성공 합니다.그렇지 않으면 대상 시퀀스의 현재 문자 집합의 요소 중 하나가 일치 하는 경우 일치 작업이 성공 합니다.
모든 조합이 나열 하 여 문자 집합을 정의할 수 있습니다 개별 문자, 문자 범위, 문자 클래스, 동치, 및 정렬 기호.
캡처 그룹
캡처 그룹을 단일 정규 표현식 문법에서 내용을 표시 및 레이블 내용을 일치 하는 대상 텍스트입니다.각 캡처 그룹과 관련 된 계산 하 여 표시 하는 열기 괄호 그룹 최대 캡처 및 포함 하는 여는 괄호는 현재 캡처 그룹 표시 결정 됩니다 숫자로 레이블입니다.이 구현에서 캡처 그룹의 최대 수는 31입니다.
예를 들면 다음과 같습니다.
"ab +" "약어" 대상 시퀀스와 일치 하지만 "abab" 대상 시퀀스와 일치 하지 않습니다.
"(ab) +" "약어" 대상 시퀀스와 일치 하지 않습니다 있지만 "abab" 대상 시퀀스와 일치 합니다.
"((a+)(b+))(c+)" matches the target sequence "aabbbc" and associates capture group 1 with the subsequence "aabbb", capture group 2 with the subsequence "aa", capture group 3 with "bbb", and capture group 4 with the subsequence "c".
문자 클래스
대괄호로 묶은 식에서 문자 클래스가 모든 문자 대괄호로 묶은 식에서 정의 된 문자 집합 이름이 지정 된 클래스에 추가 합니다.문자 클래스를 만들 수 있습니다 "[:" 뒤에 "::"가 뒤에 클래스의 이름입니다.호출 하 여 문자 클래스의 이름을 내부적으로 인식 하지 id = traits.lookup_classname.문자 ch 클래스에 속한 경우 traits.isctype(ch, id) 는 true를 반환 합니다.기본 regex_traits 서식 파일은 다음 표에 클래스 이름을 지원 합니다.
클래스 이름 |
설명 |
---|---|
"alnum" |
소문자, 대문자, 숫자 |
"알파" |
소문자 및 대문자 |
"빈" |
공백 또는 탭 |
"cntrl" |
해당 파일 형식 이스케이프 문자 |
"자리" |
digits |
"그래프" |
소문자, 대문자, 숫자 및 문장 부호 |
"낮은" |
소문자 |
[인쇄] |
소문자, 대문자, 숫자, 문장 부호 및 공간 |
"문장" 부호 |
문장 부호 |
"공간" |
공간 |
"위 |
대문자 |
"xdigit" |
자리는 'a', 'b', 'c',', 'e', 'f'를 'A' 'B', 'C'를 계측', 'E', 'F' |
"d" |
숫자와 동일 |
"s" |
같은 공간 |
/w |
alnum와 동일 |
문자 범위
대괄호로 묶은 식에서 문자 범위 괄호 식에 의해 정의 된 문자 집합을 범위에서 모든 문자를 추가 합니다.문자 입력 문자 범위를 만들려면 '-'는 범위의 첫 번째 및 마지막 문자 사이.이렇게 더 보다 또는 첫 번째 문자의 숫자 값 및 더 적은의 마지막 문자를 숫자 값으로 숫자 값이 있는 모든 문자 집합에 배치 됩니다.이 추가 문자이 집합 문자가 플랫폼별 표현을에 종속 되어 있습니다.하면 문자 '-' 발생 이나 끝 또는 대괄호로 묶은 식의 첫 번째 또는 마지막 문자로 문자 범위를 나타내는 자체.
예를 들면 다음과 같습니다.
"[0-7]" {'0', ' 1', ' 2', ' 3', '4', ' 5', ' 6', ' 7'} 문자 집합을 나타냅니다.대상에 맞는 시퀀스 잘못 "0"과 "1", "a" 합니다.
시스템에서 사용 하는 ASCII 문자 인코딩, "[h-k]" 문자 집합을 나타내는 {'h', 'i', 'j', 'k'}.대상 시퀀스 "h" 일치 "i"와, 있지만 "\x8A" 또는 "0"입니다.
시스템에서 사용 하는 EBCDIC 문자 인코딩, "[h-k]" 문자 집합을 나타내는 {'h', 'i', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', '\x90', 'j', 'k'} 0x88로 인코딩 'h'와 'k'는 0x92로 인코딩됩니다.대상 시퀀스 "h" 일치 "i", "\x8A" 등 있지만 않습니다 "0"입니다.
"[-0-24]" 문자 집합을 나타내는 {'-', ' 0', '1', ' 2', ' 4'}.
"[0-2]" 문자 집합을 나타내는 {'0', '1', '2', '-'}.
ASCII 문자 인코딩을 사용 하 여 "[+-]" 문자 집합을 나타내는 시스템 {'+ ',' ', '-'}.
그러나 로캘에 범위를 사용 하는 경우 문자 범위에 있는 데이터 정렬 규칙의 로케일에 의해 결정 됩니다.정의 범위에서 첫 번째 문자 다음에 오는 병합 하 고 마지막 문자 범위를 정의 하기 전에 집합에 있는 문자입니다.두 끝 문자 집합에서 이기도합니다.
요소를 정렬합니다.
정렬 요소는 단일 문자로 처리 됩니다 여러 문자 시퀀스입니다.
기호 정렬
대괄호로 묶은 식의 데이터 정렬 기호 추가 요소 정렬 을 대괄호로 묶은 식에서 정의 된 집합입니다.정렬 기호를 만들 수 있습니다 "[." 뒤에 "." 다음에 정렬 요소입니다.
이스케이프 시퀀스 제어
다음 백슬래시 문자 'c 문자 중 하나를 사용 하 여 다음 에' 'a'부터 'z' 또는 'A'부터 'Z'에 컨트롤 이스케이프 시퀀스가입니다.해당 문자를 기준으로 지정 된 ASCII 제어 문자를 찾습니다.예를 들어, "\ci" 때문에 "\ x 09" 대상 시퀀스에 맞는 < ctrl-i > 0x09 값이 있습니다.
DSW 문자 이스케이프
Dsw 문자 이스케이프 문자 클래스의 약식 이름을 다음 표에 표시 된 대로입니다.
이스케이프 시퀀스 |
해당 하는 클래스를 지정 합니다. |
기본 클래스를 지정 합니다. |
---|---|---|
"\d" |
"[[:d:]]" |
"[[: 자리:]]" |
"\D" |
"[^[:d:]]" |
"[^ [: 자리:]]" |
"\s" |
"[[:s:]]" |
"[[: 공간:]]" |
"\S" |
"[^[:s:]]" |
"[^ [: 공간:]]" |
"\w" |
"[[:w:]]" |
"[a-zA-Z0-9_]" * |
"\W" |
"[^[:w:]]" |
"[^ a-zA-Z0-9_]" * |
* ASCII 문자 집합
동급 클래스
모든 문자는 대괄호로 묶은 식에서 등가 클래스 추가 및 요소 정렬 정렬 요소 등가 클래스 정의가 괄호 식에 의해 정의 된 집합에 해당 하는.동급 클래스를 만들 수 있습니다 "[=" 다음에 데이터 정렬 요소 다음에 "=]".내부적으로 두 개의 정렬 요소 elt1 및 elt2 해당 하는 경우 traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).
파일 형식 이스케이프
파일 형식 이스케이프는 일반적인 C 언어 문자 이스케이프 시퀀스, "\\", "\a", "\b", "\f", "\n", "\r", "\t", "\v" 중 구성 됩니다.이러한 일반적인 의미, 즉, 백슬래시, 경고, 백스페이스, 용지 공급, 줄 바꿈, 캐리지 리턴, 가로 탭 및 세로 탭 각각 있습니다.ECMAScript, "\A" 및 "\b" 허용 되지 않습니다.("\\" 허용 되지만 파일 형식 이스케이프 identity 이스케이프 됩니다).
16 진수 이스케이프 시퀀스
16 진수 이스케이프 시퀀스는 백슬래시 뒤에 '두 개의 16 진수 숫자 (0-9a-fA-F) 뒤에 x' 문자입니다.의해 두 자리 숫자를 지정 된 값이 대상 시퀀스의 문자를 찾습니다.예를 들어, ASCII 문자 인코딩을 사용 하는 경우 "\x41"은 대상 시퀀스를 "A"를 찾습니다.
Identity 이스케이프
Identity 이스케이프 백슬래시 뒤에 단일 문자입니다.해당 문자를 찾습니다.문자에 특별 한 의미가 있는 경우 필수입니다. identity 이스케이프를 사용 하 여 특별 한 의미가 제거 됩니다.예를 들면 다음과 같습니다.
"는 *" 대상 시퀀스 "aaa"와 일치 하지만 대상 시퀀스 일치 하지 않습니다 "는 *".
"a\ *" 대상 시퀀스 "aaa"와 일치 하지 않는 있지만 대상 시퀀스 일치 "는 *".
Identity 이스케이프 허용 되는 문자 집합에는 다음 표에 나와 있는 것 처럼 정규 표현식 문법에 따라 달라 집니다.
문법 |
Identity 이스케이프 문자를 허용합니다. |
---|---|
BRE, grep |
{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' } |
ERE, egre |
{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' } |
awk |
ERE+ {' "', '/'} |
ECMAScript |
모든 문자는 식별자의 일부가 될 수 있습니다 제외 하.일반적으로 문자, 숫자, '$', '_' 및 유니코드 이스케이프 시퀀스가 포함 됩니다.ECMAScript 언어 사양에 대 한 자세한 내용은 참조 하십시오. |
개별 문자
대괄호로 묶은 식의 각 문자 문자는 대괄호로 묶은 식에서 정의 된 문자 집합을 추가 합니다.어디에 제외 하 고 대괄호로 묶은 식의 시작 부분에 있는 ' ^' 자체를 나타냅니다.
예를 들면 다음과 같습니다.
일치 하는 대상 시퀀스 "[abc]" "a", "b" 및 "c"를 있지만 않는 시퀀스 "d"입니다.
"[^ abc]"은 대상 시퀀스 "d"를 찾지만 대상 시퀀스 "a", "b" 또는 "c"입니다.
"[는 ^ bc]" "a", "b", "c", 대상 시퀀스와 일치 하 고 "^", 하지만 대상 시퀀스 "d".
제외 하 고 모든 정규 표현식 문법에 ECMAScript경우는 ']' 여는 뒤에 오는 첫 번째 문자 ' [' 또는 초기 뒤에 오는 첫 번째 문자 ' ^', 자체를 나타냅니다.
예를 들면 다음과 같습니다.
"" 때문에 올바르지 않습니다 없습니다 ']' 대괄호로 묶은 식 종료 합니다.
"abc]" 일치 대상 시퀀스 "a", "b", "c" 및 "]", 하지만 대상 시퀀스 "d".
"^ abc]" "a", "b", "c", 일치 하는 대상 시퀀스 "d" 있지만 대상 시퀀스 또는 "]".
ECMAScript를 사용 하 여 ' \]' 문자를 나타내는 ']' 대괄호로 묶은 식에서.
예를 들면 다음과 같습니다.
"" 대상 시퀀스 일치 "a" 대괄호로 묶은 식은 비어 있기 때문에.
"[\]abc]" 일치 하는 대상 시퀀스 "a", "b", "c" 및 "]" 하지만 대상 시퀀스 "d".
음수 어설션
음수 assert 이외의 내용을 일치합니다.대상 시퀀스의 모든 문자를 사용 하지는 않습니다.예를 들어, "(?!.aa)(a*) "대상 시퀀스 일치"a"및 관련자 캡처 그룹 1 subsequence와"a".대상 시퀀스 "aa" 또는 "aaa" 대상 시퀀스 일치 하지 않습니다.
부정적인 단어 경계 어설션
대상 문자열의 현재 위치를 바로 뒤에 있지 않은 경우 word 음수 경계 assert와 일치 하는 단어 경계.
캡처 그룹
캡처 그룹을 단일 정규 표현식 문법에서 내용을 표시 대상 텍스트를 표시 하지 않습니다.예를 들어, "(일치 하는 대상 텍스트"abbc"a)(?:b)*(c) 및 동료 캡처 그룹 1 subsequence와"a"하 고 그룹 2는 subsequence"c "를.
Non-greedy 반복
Non-greedy 반복 패턴이 일치 하는 대상 시퀀스의 짧은 subsequence를 사용 합니다.최대 반복 되는 긴 소모 됩니다.예제 "(a+)(a*b)" 대상 "시퀀스"aaab 일치 합니다.Non-greedy 반복을 사용 하는 경우 캡처 그룹 1 연결의 subsequence와 "a" 대상 부분에 시퀀스와 2 그룹 subsequence "aab" 대상 시퀀스의 끝을 캡처합니다.최대 일치를 사용 하는 경우이 캡처 그룹 1 subsequence "aaa" 및 캡처로 2 그룹 "b" subsequence에 연결 합니다.
8 진수 이스케이프 시퀀스
8 진수 이스케이프 시퀀스는 백슬래시 뒤 하나, 둘 또는 세 개의 8 진수 (0-7)에서입니다.이러한 숫자를 지정 된 값이 대상 시퀀스의 문자를 찾습니다.모든 숫자 '0' 이면 시퀀스가 잘못 되었습니다.예를 들어, ASCII 문자 인코딩을 사용 하는 경우 "\101" 대상 시퀀스를 "A"를 찾습니다.
일반 문자
일반 문자는 현재 문법에서 특별 한 의미 하지 않는 모든 문자가입니다.
ECMAScript, 다음 문자가 특별 한 의미를 갖습니다.
- ^ $ \ .* + ?( ) [ ] { } |
BRE 및 grep, 다음 문자가 특별 한 의미를 갖습니다.
- .[ \
또한 BRE 및 grep, 특정 컨텍스트에서 사용 되는 경우 다음 문자 특별 한 의미를 갖습니다:
' *' 정규식의 첫 번째 문자 또는 초기 다음에 오는 첫 번째 문자가 있을 때를 제외 하 고는 모든 경우에에서 특별 한 의미를 갖는 ' ^'는 일반 표현식 또는 캡처 그룹의 첫 번째 문자 또는 초기 다음에 오는 첫 번째 문자가 있을 때 ' ^' 캡처 그룹에서입니다.
' ^' 첫 번째 문자는 정규식의 경우 특수 한 의미가 있습니다.
'$'는 마지막 문자는 정규식의 경우 특수 한 의미가 있습니다.
ERE, egrep, 및 awk, 다음 문자가 특별 한 의미를 갖습니다.
- .[ \ ( * + ?{ |
또한 ERE, egrep, 및 awk, 특정 컨텍스트에서 사용 되는 경우 다음과 같은 문자를 특수 한 의미가 있는.
')'가 일치 하면 위의 '('. 특별 한 의미가
' ^' 첫 번째 문자는 정규식의 경우 특수 한 의미가 있습니다.
'$'는 마지막 문자는 정규식의 경우 특수 한 의미가 있습니다.
대상 시퀀스에 동일한 문자를 일반 문자입니다.기본적으로,이 두 개의 문자가 같은 값으로 표시 되는 경우는 일치에 성공할 수 있습니다.두 문자 대/소문자 구분 일치를 ch0 및 ch1 일치 하는 경우 traits.translate_nocase(ch0) == traits.translate_nocase(ch1).로캘에 일치, 두 개의 문자를에서 ch0 및 ch1 일치 하는 경우 traits.translate(ch0) == traits.translate(ch1).
양수 어설션
양수 assert 해당 내용과 일치 하지만 대상 시퀀스의 모든 문자를 소모 하지 않습니다.
예를 들면 다음과 같습니다.
"(? aa)(a*) ="대상 시퀀스 "aaaa"와 일치 하 고 캡처 그룹 1 "aaaa" subsequence와 연결.
"(aa)(a*)" matches the target sequence "aaaa" and associates capture group 1 with the subsequence "aa" at the beginning of the target sequence and capture group 2 with the subsequence "aa" at the end of the target sequence.
"(?=aa) (a) |(a) "대상 시퀀스와 일치"는 "하 고 관계자와 빈 시퀀스 그룹 1 (양수 어설션 실패 했기 때문에) 고 그룹 2는 subsequence와"a".대상 시퀀스 "aa"와 일치 하 고 캡처 그룹 1 subsequence "aa" 및 캡처 그룹 2에 빈 시퀀스를 연결 합니다.
유니코드 이스케이프 시퀀스
유니코드 이스케이프 시퀀스는 백슬래시 문자 'u'이 네 개의 16 진수 (0-9a-fA-F)에서 뒤에 뒤입니다.대상 시퀀스에 네 자리 숫자를 지정 된 값이 문자를 찾습니다.예를 들어, ASCII 문자 인코딩을 사용 하는 경우 "\u0041" 대상 시퀀스를 "A"를 찾습니다.
와일드 카드 문자
와일드 카드 문자 바꿈 제외 대상 식에서 문자를 찾습니다.
단어 경계
단어 경계는 다음 상황에서 발생합니다.
현재 문자 대상 시퀀스의 시작 부분에 및 word 문자 중 하나입니다.A-Za-z0-9_.
대상 시퀀스의 끝을 지 나 현재 문자 위치가 됩니다 및 대상 시퀀스의 마지막 문자가 단어 문자 중 하나입니다.
현재 문자 word 문자 중 하나입니다 및 앞에 오는 문자가 아닙니다.
현재 문자 단어 문자를 하나 되어 선행 문자입니다.
단어 경계 어설션
대상 문자열의 현재 위치가 바로 뒤에 있을 때 word 경계 assert와 일치 하는 단어 경계.
일치 하는 및 검색
대상 시퀀스에 일치 하는 일반 표현식에 대 한 전체 대상 시퀀스 전체 정규식 일치 해야 합니다.예를 들어, 정규식 "bcd" 대상 시퀀스 "bcd"와 일치 하지만 대상 시퀀스 "abcd"와 "bcde" 대상 시퀀스와 일치 하지 않습니다.
정규식 검색을 성공적으로 있어야는 subsequence 어딘가에 대상 시퀀스에 정규식이 일치 합니다.검색은 일반적으로 가장 왼쪽 일치 하는 subsequence를 찾습니다.
예를 들면 다음과 같습니다.
대상 시퀀스 "bcd" 정규식 "bcd"에 대해 검색 성공 하 고 전체 시퀀스입니다.또한 한 검색 "abcd 라는" 대상 시퀀스에서 성공 하 고 마지막 세 문자를 찾습니다.또한 한 검색 대상 시퀀스 "bcde"에서 성공 하 고 처음 세 개의 문자를 찾습니다.
"Bcdbcd" 대상 시퀀스에서 정규 표현식 "bcd"에 대해 검색 성공 하 고 처음 세 문자입니다.
대상 시퀀스의 일부 위치에 일치 하는 하나 이상의 subsequence 경우 두 가지 방법으로 일치 하는 패턴을 선택할 수 있습니다.처음 일치 정규식에 일치 하는 경우는 처음 발견 된 subsequence를 선택 합니다.가장 긴 일치 위치에서 일치 하는 것에서 가장 긴 subsequence 선택할 수 있습니다.가장 긴 일치 최대 길이가 subsequence 두 개 이상 있을 경우 처음 발견 된 것을 선택 합니다.예를 들어, 첫 번째 일치 항목을 사용 하는 경우 왼쪽 용어를 시키려면 해당 subsequence 일치 하기 때문에 정규 표현식 "b|bc"에 "abcd 라는" 대상 시퀀스에 대 한 검색 subsequence "b" 일치 합니다. 따라서 첫 번째 일치 항목이 오른쪽 용어는 교체를 시도 하지 않습니다.가장 긴 일치 항목을 사용 하는 경우 "bc" "b" 보다 길기 때문에 같은 검색 "bc"를 찾습니다.
부분적으로 일치에 정규식의 끝에 도달 했습니다 경우에 일치 대상 시퀀스의 끝에 실패 하지 않고 도달 하면 성공 합니다.따라서 부분적으로 일치에 성공 하면 대상 시퀀스에 문자를 추가 실패 하는 나중에 부분 일치를 발생할 수 있습니다.그러나 문자 대상 시퀀스에 추가 부분 일치 하는 항목을 실패 한 후 성공 하려면 나중에 부분 일치 항목을 일으킬 수 없습니다.예를 들어, 부분 일치, "ab" 대상 시퀀스 일치 하는 "a" 있지만 "ac".
형식 플래그
ECMAScript 서식 규칙 |
sed 서식 규칙 |
대체 텍스트 |
---|---|---|
"$ &" |
"&" |
전체 정규식과 일치 하는 문자 시퀀스 ([match[0].first, match[0].second)) |
"$$" |
"$" |
|
|
"\ &" |
"&" |
"$'" (달러 기호 다음에 의해 역방향 따옴표) |
|
정규식과 일치 하는 subsequence 앞에 문자 시퀀스 ([match.prefix().first, match.prefix().second)) |
"$'" (달러 기호 다음에 앞으로 견적이) |
|
정규식과 일치 하는 subsequence 다음에 오는 문자 시퀀스 ([match.suffix().first, match.suffix().second)) |
"$ n" |
"\n" |
위치에서 캡처 그룹과 일치 하는 문자 시퀀스 n, 어디 n 0 (9 사이의 숫자입니다[match[n].first, match[n].second) |
|
"\\n" |
"\n" |
"$ $ nn" |
|
위치에서 캡처 그룹과 일치 하는 문자 시퀀스 nn, 어디 nn (10-99 사이의 숫자입니다[match[nn].first, match[nn].second) |