정규식 구문

엠에디터 정규식 구문은 Perl 정규식 구문을 기본으로 합니다.

리터럴

모든 문자는 리터럴입니다. 하지만 다음을 제외시킵니다: ".", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^", "$" 그리고 "\". 이 문자는 "\" 문자 앞에 올 때 문자입니다. 리터럴은 그것 스스로 매치되는 문자입니다. 예를 들어, "\"을 찾는 것은 "?"이 문서에서 일치될 때마다, 혹은 "Hello"를 찾는것이 문서에서 "Hello" 마다 찾은 것이 됩니다.

메타 문자

다음의 표는 메타 문자(리터럴이 아닌) 목록의 완성과 정규식의 문맥에서의 행동을 포함하고 있습니다.

\

특수 문자, 리터럴, 혹은 역참조로 다음 문자를 표시합니다.
예를 들어, 'n'은 "n" 문자로 일치하며, '\n'는 줄 바꾸기 문자와 일치시킬 수 있습니다. 시퀀스 '\'는 "\" 와 "\(" 는 "("과 일치합니다.

^

이 문자는 입력 문자열의 처음 부분에서 일치합니다. 예를 들어, "^e" 는 "e"로 시작하는 문자열 모두를 일치시킵니다.

$

이 문자는 입력 문자열의 맨 뒷부분에서 일치합니다. 예를 들어, "e$"는 "e"로 끝나는 문자열의 맨 뒤와 일치합니다.

*

이 문자는 계속되는 문자 혹은 하위 표현 제로 혹은 더 많은 것을 일치합니다.
예를 들어, zo*는 "z"혹은 "zoo"와 일치하게 됩니다. * 는 {0,} 와 같습니다.

+

이것은 계속되는 문자 혹은 들어있는 문자에서 한번 혹은 그 이상을 일치합니다.
예를 들어, 'zo+'는 "zo" 그리고 "zoo"는 일치하지만, "z"는 일치하지 않습니다. +는 {1,}와 같습니다.

?

계속되는 문자 혹은 들어있는 문자에서 열번 혹은 한번을 일치시킵니다.
예를 들어 "do(es)?"는 "do" in 를 일치시킵니다. "do" 혹은 "does".? 는 {0,1}와 같습니다.

{n}

n 는 음수가 아닌 정수를 일치시킵니다. 정확히 n 번을 일치시킵니다. 예를 들어, 'o{2}' 는 "Bob"의 "o"를 일치시키지는 않지만, "food"의 두번의 o'를 일치시킵니다.

{n,}

n 은 음수가 아닌 정수입니다. 적어도 n 번 일치시킵니다. 예를 들어, 'o{2,}' 는 "Bob"의 "o"를 일치시키지는 않지만, "foooood"에 있는 o'는 일치시킵니다. "o{1,}"는  'o+'를 일치시킵니다. 'o{0,}'는 'o*'와 같습니다.

{n,m}

m 과 n 은 음수가 아닌 정수입니다. n <= m 입니다. 최소 n 번 그리고 최대
m 번 일치시킵니다. 예를 들어, "o{1,3}"는 "fooooood"에서 처음 세개의 o'를 일치시키며, 'o{0,1}' 는 'o?'와 같습니다. 주의: 코마와 숫자 사이에 스페이스를 넣을 수 없습니다.

?

이 문자가 다른 수량자(*, +, ?, {n}, {n,}, {n,m})에 곧바로 따라올 때, 초기 그리디 패턴이 최대의 찾은 문자열을 일치시키는 동안, 일치 패턴은 최소의 찾은 문자열을 보입니다. 예를 들어, "oooo", 'o+?'는 'o+'가 모든 'o'와 일치될 때, 하나의 "o"를 일치시킵니다.

.

어느 단일 문자를 일치시킵니다. 예를 들어, 어느 문자 "he", "we", 혹은 "me"가 있는 문자같은 ".e"로 텍스트를 매치시킵니다.
EmEditior Professional에서, 이것은 정규식을 찾기 위한 추가 줄 텍스트 상자에서 지정 범위안의 줄 바꾸기를 매치시킵니다. 만일 정규식 "." 은 줄 바꾸기 문자를 일치합니다. 체크박스에 체크되어 있을 때, 이것을 실행합니다.

(패턴)

괄호는 두가지 목적이 있습니다: 한 패턴을 하위 표현을 그룹화 하기 위해서 긜고 어떤 패턴이 생성되었는지 캡쳐하기 위해서가 그것입니다.
예를 들어, "(ab)*" 표현은 모든 "ababab"의 문자열을 일치시킵니다. 각각의 하위 표현 일치는 역참조로써 캡쳐됩니다. (아래 참조) 왼쪽부터 오른쪽 까지. 활호 문자를 일치시키기 위해서는( ), '\(' 또는 '\)'를 사용해 주십시오.

\1 - \9

백 참조를 가리킵니다 - 역참조는 이미 일치된 이전 하위 표현을 참결합니다.
참조는 식 자체가 아니라, 하위 표현이 일치하기 위해서 사용됩니다.
역참조는 "1", "9", "\1"에 따라오는 이스케이프 문자 "\"로 구성되어 있습니다.
이것은 첫번째 하위식을 말합니다. "\2"는 두번째 이며 이 방식은 계속 같습니다.
예를 들어, "(a)\1"는 "a"를 첫번째 역참조로써 캡쳐하며, "aa"가 들어있는 어떤 문자도 매치시킵니다.
역참조는 찾기 메뉴의 바꾸기 를 이용할 때, 사용할 수도 있습니다.
텍스트 패턴의 위치를 지정하기 위해서 사용하시고, 일치 텍스트는 지정된 역참조로 바뀔 수 있습니다.
예를 들어, "(h)(e)"는 "he"를 찾을 것이고, 바꾸기 상자에서 "\1"를 넣어서 "he"로 바꿀 수 있습니다.
"\2\1"으로 "he" 를 "eh"로 바꿀 것입니다.

(?:pattern)

하위 표현은 패턴을 일치시키지만, 매치를 캡쳐하지는 않습니다.
그것은, 캡쳐하지 않는 일치로, 이후의 가능한 사용을 위해서 저장될 수 없습니다.
이것은 "or"을 (|) 문자의 패턴과 부분을 묶어서 사용할 수 있습니다.
예를 들어, 'industr(?:y|ies)는 'industry|industries'보다 더 경제적인 표현입니다.

(?=pattern)

포함된 것 찾기를 수행하는 하위 표현은 문자열이 패턴의 시작과 일치하는 곳의 문자열을 일치시킵니다.
예를 들어, 일치가 이후에 사용 가능한 곳에 역참조로 캠쳐되지 못했을 때, "x(?=abc)"는 "x"만을 일치시킵니다. 패턴은 줄 바꾸기를 포함하지 않습니다.

(?!pattern)

포함 되지 않은것을 찾는데 수행하는 하위 표현이며, 이는 어느 지점에서든지 패턴의 처음과 맞지 않는 문서열을 찾습니다. 예를 들어, "x(?!abc)"는 "abc"에 따라오지 않는 "x"만 찾습니다. 이것은 캡쳐하지 않는 일치이며,
일치는 열 참조와 이후에 사용될 가능성이 있는 문자열과 일치시키지 않습니다.
패턴은 줄 바꾸기를 포함하지 않습니다.

(?<=pattern)

포함된 것 찾기를 수행하는 하위 표현은 문자열의 패턴의 끝과 일치하는 곳의 문자열을 일치시킵니다.
예를 들어, "abc"이 사용될 경우에만 "(?<=abc)x"는 "x"를 일치시킵니다. 이것은 캡쳐 없는 일치이며, 이것은 이후에 사용 가능한 역참조로 캡쳐되지 않습니다.
패턴은 줄 바꾸기를 포함하고 있지 않습니다. 패턴은 길이가 정해져 있어야만 합니다.

(?<!pattern)

하위 표현은 문자열 끝부분에 일치하지 않을 때, 어떤 부분에서든 문자열을 찾을 수 있도록 포함되지 않은 것 찾기를 수행합니다.
예를 들어, "abc" 표현이 없을 때, "(?<!abc)x"는 "x"를 일치시킵니다. 이것은 캡쳐 일치가 아닙니다. 즉, 일치가 이후에 사용가능한 역참조를 캡쳐하지 않습니다.
패턴은 줄 바꾸기를 포함하지 않습니다.
패턴은 반드시 고정된 길이여야 합니다.

x|y

이것은 x 혹은 y를 일치시킵니다. 예를 들어, 'z|food'는 "z" 혹은 "food"을 매치시킵니다. '(z|f)ood'는 "zood" 혹은 "food"를 매치시킵니다.

[xyz]

문자 집합. 포함된 문자중 하나를 매치합니다.
예를 들어, '[abc]'는 "plain"의 'a'를 매치시킵니다.

[^xyz]

음수 문자 집합. 포함되지 않은 어떤 문자를 매치시킵니다. 예를 들어, '[^abc]'는 "plain"의 'p'를 매치시킵니다.

[a-z]

문자 집합. 지정된 범위의 어떤 문자를 일치시킵니다.
예를 들어 '[a-z]'는 'a' 부터 'z' 까지의 소문자도 일치시킵니다.

[^a-z]

포함하지 않는 범위 문자. 범위에 지정되지 않은 어떤 문자도 일치시킵니다.
예를 들어, '[^a-z]' 'a' 부터 'z'까지 포함되지 않는 어떤 문자도 일치시킵니다.

문자 클래스

다음의 문자 클래스는 "[:classname:]"와 같은 문자 집합에서 사용됩니다. 예를 들어, "[[:space:]]" 는 모든 공백 문자의 집합입니다.

alnum

모든 영문자

alpha

모든 문자 a-z, A-Z, 그리고 다른 문자.

blank

모든 공백 문자. 스페이스, 혹은 탭.

cntrl

모든 컨트롤 문자

digit

숫자 0-9.

graph

모든 그래트 문자

lower

모든 소문자 a-z, 그리고 다른 소문자

print

모든 인쇄가능한 문자

punct

모든 구두점 문자

space

모든 공백 문자

upper

모든 대문자 A-Z, 그리고 다른 대문자.

xdigit

모든 16진수 문자, 0-9, a-f 그리고 A-F.

word

모든 문자 - 모든 문자 그리고 밑줄.

unicode

코드가 255보다 큰 모든 문자.

단일 문자 이스케이프 시퀀스

다음의 이스케이프 시퀀스는 단일 문자입니다:

0x07

\a

벨 문자

0x0C

\f

폼 피드

0x0A

\n

줄 바꾸기 문자

0x0D

\r

캐리지 리턴

0x09

\t

탭 문자

0x0B

\v

수직 탭

0x1B

\e

ASCII 이스케이프 문자

0dd

\0dd

진수 문자 코드, dd는 진수 문자의 하나입니다.

0xXX

\xXX

16진수 문자 코드, XX가 하나 이상의 16 진수 코드 숫자입니다. (유니코드 문자).

0xXXXX

\x{XXXX}

16진수 문자 코드. XXXX 은 하나이상의 16진수 코드 입니다.(유니코드 문자).

Z-'@'

\cZ Z-'@'

ASCII 이스케이프 시퀀스 제어-Z, Z는 어떤 ASCII 문자도 '@' 를 위한 문자 코드와 같거나 큽니다.

단어 경계

다음의 이스케이프 시퀀스는 단어의 경계를 매치합니다:

\<

단어의 처음을 일치시킵니다.

\>

단어의 끝을 일치시킵니다.

\b

단어 경계를 일치시킵니다. (단어의 시작과 끝)

\B

단어 경계에 없을 때 일치시킵니다.

단어 클래스 이스케이프 시퀀스

다음의 이스케이프 시퀀스는 현재의 전체 문자 클래스에 이용됩니다:

\w

단어 문자 전부 - 모든 문자 그리고 밑줄.

\W

\w 의 구성요소 - 모든 단어가 아닌 문자를 찾습니다.

\s

공백 문자 전부

\S

\s 의 구성요소

\d

0-9 모든 숫자

\D

\d 의 구성요소.

\l

모든 소문자 a-z

\L

\l의 구성요소

\u

모든 대문자 A-Z

\U

\u의 구성요소

\C

모든 단일 문자, '.'와 같습니다.

\Q

시작 인용 작동, \E 와 인용 작동을 찾을 때 까지 따라오는 모든것은 리터럴 문자로 취급됩니다.

\E

인용 작동의 끈, \질문 으로 시작되는 시퀀스를 끝냅니다.

대체 식

다음의 식은 바꾸기 대화 상자와 파일에서 바꾸기 대화 상자에서 쓰이는 바꾸기 상자에 쓰입니다.

\0

전체 정규식으로 역참조를 가리킵니다.

\1 - \9

역참조를 가리킵니다 - 이미 일치된 이전 하위 표현으로 역참조를 참결합니다
참조는 표현 자체가 아니라 하위 표현이 일치되기 위해서 사용됩니다.
역참조는 이스케이프 문자 "1"부터 "9"까지 따라오는 "\"로 이루어져 있으며, 이것은 첫번째 하위 표현입니다.
"\2"으로 두번째를 나타냅니다.

\n

줄 바꾸기

\r

파일에서 바꾸기 인 경우 캐리지 리턴입니다. 다음을 참조하십시오: 줄 바꾸기 지정하기.

\t

\L

모든 이후 대체 문자를 소문자로 변경합니다.

\U

모든 이후 대체 문자를 대문자로 변경합니다.

\H

모든 이후 대체 문자를 반자로 변경합니다.

\F

모든 이후 대체 문자를 전자로 변경합니다.

\E

이전의 \L, \U, \F, 혹은 \H을 끕니다.

(?n:true_expression:false_expression)

만일 하위식 N이 일치되면, true_expression 은 출력으로 보내집니다. 그렇지 않으면, false_expression 은 출력으로 보내집니다.

노트

  • 파일 내 찾기 그리고 파일에서 바꾸기 에서, 캐리지 리턴 (\r) 과 줄 피드 (\n)는 주의해서 지정되어야 합니다. 줄 바꾸기 지정 의 자세한 사항을 참조하십시오.

  • "\l", "\u" 그리고 대체들과 같은 어떤 이스케이스 시퀀스를 엠에디서로 작동시키려면, 대/소문자 일치 옵션이 반드시 선택되어 있어야 합니다.

저작권 알림

엠에디터에서 사용되는 정규식은 Boost library Regex++를 사용합니다.

Copyright (c) 1998-2001 Dr John Maddock

더 자세한 내용을 위해서 다음을 참고해 주십시오.