작은숲:위키노트/정규 표현식
보이기
정규 표현식(Regular expression, regexp, regex)은 어떤 문자열의 집합을 묘사하는 텍스트 스트링.
Meta Characters
|: OR 연산자. 글자 모양 그대로의|문자와 일치시키려면 백슬래쉬를 사용하여\|라고 적거나[|]처럼 괄호 안에 적으면 된다.^: 행의 처음을 나타낸다.^라는 글자 그대로와 일치시키려면 마찬가지로 백슬래쉬를 사용하여\^라고 표기한다.$: 문자열의 끝 또는 개행 문자 바로 직전을 뜻한다.$라는 글자 그대로와 일치시키려면\$또는[$]라고 표기한다.
Grouping
그룹은 메타 문자인 (와 )를 사용하여 만든다. (와 )는 수학 표현식과 비슷한 의미를 갖는다. 괄호 안에 들어있는 표현식을 그룹화한다. 그룹화한 내용과 *, +, ?, {m,n}와 같은 반복 연산자를 사용할 수 있다.
Character Class
클래스 오퍼레이터는 리스트 안에서만(예: [:digit:]) 효력을 발휘하고, 그냥 [:digit:]와 같이 사용하면 다른 의미를 가지게 된다.
[:alnum:]: 알파벳과 숫자.[:alpha:]: 알파벳.[:blank:]: 스페이스나 탭 (시스템에 의존적임).[:cntrl:]: 아스키코드에서의 127 이상의 문자와 32 이하의 제어문자.(한글의 첫째 바이트가 127 이상이므로 제어문자로 취급됨)[:digit:]: 숫자.[:graph:]: 스페이스는 제외되고 나머지는 'print' 항목과 같음.[:lower:]: 소문자.[:print:]: 아스키코드에서 32에서 126까지의 찍을 수 있는 문자.[:punct:]: 제어문자도 아니고 알파벳, 숫자도 아닌 문자.[:space:]: 스페이스, 케리지 리턴, 뉴라인, 수직 탭, 폼피드.[:upper:]: 대문자.[:xdigit:]: 16진수, 0-9, a-f, A-F.
Lookahead Assertion
부정적 사전 확인
(?!...) 형태로 표현. 현재 위치에서 일단 ...에 적은 조건이 만족하지 않는지 사전 확인을 하고 만족하지 않아야만 다음으로 진행한다.
긍정적 사전 확인
(?=...) 와 같은 형식을 사용.
Backslash Sequence
\d: 모든 숫자와 일치한다;[0-9]클래스에 해당한다.\D: 숫자가 아닌 문자와 일치한다;[^0-9]클래스에 해당한다.\s: 공백문자와 일치한다;[ \t\n\r\f\v]클래스에 해당한다.\S: 공백문자가 아닌 것과 일치한다;[^ \t\n\r\f\v]클래스에 해당한다.\w: 숫자 또는 문자와 일치한다;[a-zA-Z0-9_]클래스에 해당한다.\W: 숫자 또는 문자가 아닌 것과 일치한다;[^a-zA-Z0-9_]클래스에 해당한다.