정규식 - 기본 구문

개발툴 2014. 7. 3. 21:02

msdn 발췌.

http://msdn.microsoft.com/ko-kr/library/ae5bf541(v=vs.90).aspx

일치 항목

/^\s*$/

빈 줄을 찾습니다.

/\d{2}-\d{5}/

2자리 숫자, 하이픈 및 추가 5자리 숫자로 구성된 ID 번호의 유효성을 검사합니다.

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/

HTML 태그를 찾습니다.

다음 표에는 정규식 컨텍스트의 메타문자와 그 동작에 대한 전체 목록이 들어 있습니다.

문자

설명

\

다음에 오는 문자를 특수 문자, 리터럴, 역참조 또는 8진수 이스케이프로 표시합니다. 예를 들어, 'n'은 문자 "n"을 찾지만 '\n'은 줄 바꿈 문자를 찾습니다. 시퀀스 '\\'는 "\"를 찾고 "\("는 "("를 찾습니다.

^

입력 문자열의 시작 부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 ^에서는 '\n'이나 '\r' 다음의 위치도 찾습니다.

$

입력 문자열의 끝 부분에서 위치를 찾습니다. RegExp 개체의 Multiline 속성이 설정되어 있으면 $는 '\n'이나 '\r' 앞의 위치도 찾습니다.

*

앞의 문자나 부분식을 0개 이상 찾습니다. 예를 들어, zo*는 "z"과 "zoo"를 찾습니다. *는 {0,}에 해당합니다.

+

앞의 문자나 부분식을 1개 이상 찾습니다. 예를 들어, 'zo+'는 "zo"와 "zoo"는 찾지만 "z"는 찾지 않습니다. +는 {1,}에 해당합니다.

?

앞의 문자나 부분식을 0개나 1개 찾습니다. 예를 들어, "do(es)?"는 "do"나 "does"에서 "do"를 찾습니다. ? 는 {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"의 처음에 오는 3개의 o를 찾습니다. 'o{0,1}'은 'o?'에 해당합니다. 쉼표와 숫자 사이에는 공백을 넣을 수 없습니다.

?

*, +, ?, {n}, {n,}, {n,m} 등의 다른 수량자 뒤에 바로 이 문자가 오면 일치하는 패턴은 non-greedy입니다. non-greedy 패턴은 가능한 한 검색 문자열을 적게 찾습니다. 반면 기본 greedy 패턴은 가능한 한 검색 문자열을 많이 찾습니다. 예를 들어, "oooo" 문자열에서 'o+?'는 "o" 하나만 찾는데 'o+'는 모든 'o'를 찾습니다.

.

"\n"이외의 모든 단일 문자를 찾습니다. '\n'을 비롯한 모든 단일 문자를 찾으려면 '[\s\S]' 패턴을 사용합니다.

(pattern)

패턴을 찾아 일치하는 항목을 캡처하는 부분식입니다. $0…$9 속성을 사용하여 결과로 생성된 Matches 컬렉션에서 캡처된 일치 항목을 검색할 수 있습니다. 괄호 문자( )를 찾으려면 '\('이나 '\)'를 사용합니다.

(?:pattern)

패턴은 찾지만 일치하는 항목은 캡처하지 않는 부분식, 즉 나중에 사용하기 위해 저장하지 않는 비캡처링 일치 항목입니다. 패턴의 일부를 "or" 문자(|)를 사용하여 결합할 때 유용합니다. 예를 들어 'industr(?:y|ies)는 'industry|industries'보다 더 경제적인 표현입니다.

(?=pattern)

양의 미리 보기 검색을 수행하는 부분식으로 패턴에 일치하는 문자열이 시작된 위치에서 문자열을 찾습니다. 이는 비캡처링 일치, 즉 나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어 'Windows (?=95|98|NT|2000)'는 "Windows 2000"의 "Windows"는 찾지만 "Windows 3.1"의 "Windows"는 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. 즉, 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.

(?!pattern)

음의 미리 보기 검색을 수행하는 부분식으로 패턴에 일치하지 않는 문자열이 시작된 위치에서 검색 문자열을 찾습니다. 이는 비캡처링 일치, 즉 나중에 사용하기 위해 캡처하지 않는 일치입니다. 예를 들어 'Windows (?!95|98|NT|2000)'는 "Windows 3.1"의 "Windows"는 찾지만 "Windows 2000"의 "Windows"는 찾지 않습니다. 미리 보기는 문자를 소비하지 않습니다. 즉, 일치가 나타나면 미리 보기를 구성하는 문자 다음이 아니라 마지막 일치 항목 바로 뒤에서 다음 일치 항목에 대한 검색이 시작됩니다.

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'까지의 범위에 있지 않은 문자를 찾습니다.

\b

단어 경계, 즉 단어와 공백 사이의 위치를 찾습니다. 예를 들어, 'er\b'는 "never"의 'er'은 찾지만 "verb"의 'er'은 찾지 않습니다.

\B

비단어 경계를 찾습니다. 'er\B'는 "verb"의 'er'은 찾지만 "never"의 'er'은 찾지 않습니다.

\cx

x로 표시된 제어 문자를 찾습니다. 예를 들어 \cM은 Control-M이나 캐리지 리턴 문자를 찾습니다. x의 값은 A-Z이나 a-z의 범위에 있어야 합니다. 범위를 벗어나면 c는 리터럴 'c' 문자로 간주됩니다.

\d

숫자를 찾습니다. [0-9]에 해당합니다.

\D

숫자가 아닌 문자를 찾습니다. [^0-9]에 해당합니다.

\f

용지 공급 문자를 찾습니다. \x0c와 \cL에 해당합니다.

\n

줄 바꿈 문자를 찾습니다. \x0a와 \cJ에 해당합니다.

\r

캐리지 리턴 문자를 찾습니다. \x0d와 \cM에 해당합니다.

\s

공백, 탭, 용지 공급 등을 비롯한 모든 공백 문자를 찾습니다. [\f\n\r\t\v]에 해당합니다.

\S

공백이 아닌 문자를 찾습니다. [^ \f\n\r\t\v]에 해당합니다.

\t

탭 문자를 찾습니다. \x09와 \cI에 해당합니다.

\v

세로 탭 문자를 찾습니다. \x0b와 \cK에 해당합니다.

\w

밑줄을 비롯한 모든 문자를 찾습니다. '[A-Za-z0-9_]'에 해당합니다.

\W

비단어 문자를 찾습니다. '[^A-Za-z0-9_]'에 해당합니다.

\xn

n을 찾는데, 여기서 n은 16진수 이스케이프 값입니다. 16진수 이스케이프 값은 정확히 두 자리 수입니다. 예를 들어, '\x41'은 "A"를 찾습니다. '\x041'은 '\x04' & "1"에 해당합니다. ASCII 코드가 정규식에 사용될 수 있습니다.

\num

num을 찾는데, 여기서 num은 양의 정수입니다. 캡처된 일치에 대한 역참조입니다. 예를 들어, '(.)\1'은 두 개의 연속된 동일 문자를 찾습니다.

\n

8진수 이스케이프 값이나 역참조 중 하나를 식별합니다. \n 앞에 n개 이하의 캡처된 부분식이 오면 n은 역참조입니다. 그렇지 않고 n이 8진수(0-7)이면 n은 8진수 이스케이프 값입니다.

\nm

8진수 이스케이프 값이나 역참조 중 하나를 식별합니다. \nm 앞에 nm개 이하의 캡처된 부분식이 오면 nm은 역참조입니다. \nm 앞에 n개 이하의 캡처가 오면 n은 뒤에 리터럴 m이 오는 역참조입니다. 처리 조건이 없으면 \nm은 n과 m이 8진수(0-7)일 때 8진수 이스케이프 값 nm을 찾습니다.

\nml

n이 8진수(0-3)이고 m과 l이 8진수(0-7)인 8진수 이스케이프 값 nml을 찾습니다.

\un

n을 찾는데, 여기서 n은 네 자리 16진수로 표현된 유니코드 문자입니다. 예를 들어 \u00A9는 저작권 기호(©)를 찾습니다.


'개발툴' 카테고리의 다른 글

python 콘솔등에서 출력 텍스트 컬러  (0) 2014.07.25
Mac Os Terminal Color  (0) 2014.07.24
정규식 - 특정 문자열 제외  (1) 2014.07.03
mac os 업데이트 후 brew path 가 맞지 않는 경우  (0) 2014.07.01
SVN  (0) 2014.06.23

정규식 - 특정 문자열 제외

개발툴 2014. 7. 3. 20:55

정규식에서 특정 단어를 제외하고 검색하고 싶으면


^((?!<문자열>).)*$


라인시작으로부터 ( ^ ) , <문자열>이 일치하지 않고 (?!) 어떤 문자들이 뒤에 위치할 수도 있은 뒤에 ( (.)* ) 라인 종료 ($)


역시 우리의 스택오버 플로우로부터. 


http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-containing-a-word



Note that the solution to does not start with “hede”:

^(?!hede).*$

is generally much more efficient than the solution to does not contain “hede”:

^((?!hede).)*$

The former checks for “hede” only at the input string’s first position, rather than at every position.

'개발툴' 카테고리의 다른 글

python 콘솔등에서 출력 텍스트 컬러  (0) 2014.07.25
Mac Os Terminal Color  (0) 2014.07.24
정규식 - 기본 구문  (0) 2014.07.03
mac os 업데이트 후 brew path 가 맞지 않는 경우  (0) 2014.07.01
SVN  (0) 2014.06.23