정규표현식 연습 사이트
정규표현식이란?
종류 | 탐지율 | 오탐율 |
---|---|---|
탐욕적 수량자 | 높음 | 높음 |
게으른 수자 | 낮음 | 낮음 |
yara: 특정 파일을 미리 지정해 둔 악성코드 패턴과 비교하여 일치하는 파일을 분류할때 사용
정규표현식: 문자열 내에서 일정한 규칙을 찾을 때 사용함
정규표현식
명칭 | 기호 | 의미 | 사용 방법 | 예시 및 결과 |
---|---|---|---|---|
문자 그대로 매칭 | a , abc |
해당 문자가 정확히 일치 | 패턴 안에 직접 작성 | r"abc" → "abc" 에서 매칭됨 |
임의의 한 문자 | . |
줄바꿈 제외 아무 문자 1개 | . 를 사용 |
r"a.c" → "abc", "axc" 매칭 |
문자 클래스 | [ ] |
대괄호 안의 문자 중 하나 매칭 | [abc] → a, b, c 중 하나 |
r"[ch]at" → "cat", "hat" 매칭 |
문자 범위 | [a-z] |
연속된 범위 지정 | [0-9] , [A-Z] |
r"[0-9]" → 숫자 하나 매칭 |
부정(제외) | [^ ] |
대괄호 안 문자가 아닌 것 | [^0-9] |
r"[^0-9]" → 숫자가 아닌 문자 매칭 |
문자열 시작 | ^ |
문자열의 맨 앞 | ^abc |
"abc123" 시작 부분만 매칭 |
단어 문자 | \\w |
알파벳, 숫자, _ |
\\w+ |
"word_123" 매칭 |
단어 아님 | \\W |
\\w 아닌 문자 |
\\W+ |
"!!!", " " 매칭 |
숫자 | \\d |
0~9 | \\d+ |
"123" 매칭 |
숫자 아님 | \\D |
숫자가 아닌 것 | \\D+ |
"abc" 매칭 |
공백 문자 | \\s |
공백, 탭, 줄바꿈 등 | \\s+ |
" " , "\\n" 매칭 |
공백 아님 | \\S |
공백 제외 문자 | \\S+ |
"abc123" 매칭 |
명칭 | 기호 | 의미 | 사용 방법 | 예시 및 결과 |
---|---|---|---|---|
줄바꿈 | \\n |
개행 문자(newline) | "a\\nb" → 줄바꿈 포함 |
re.split(r"\\n", "a\\nb") → ['a', 'b'] |
탭 | \\t |
탭 문자 | "a\\tb" |
\\t 부분 매칭 |
8진법 표기 | \\000 |
255 이하의 수를 8진법 문자로 표기 | "\\141\\142" |
abcd → ab 부분 매칭 |
16진법 표기 | \\x00 |
255 이하의 수를 16진법 문자로 표기 | "\\x61\\x62" |
abcd → ab 부분 매칭 |
유니코드 표기 | \\000 |
유니코드 문자로 표기 | "\\u0061\\u0062" |
abcd → ab 부분 매칭 |
명칭 | 기호 | 의미 | 사용 방법 | 예시 및 결과 |
---|---|---|---|---|
숫자(digit) | \\d |
[0-9] 와 동일, 숫자 하나 |
\\d+ → 숫자 여러 개 |
"a123b" → 123 매칭 |
숫자 아님 | \\D |
숫자가 아닌 문자 하나 | \\D+ |
"abc123" → abc 매칭 |
단어 문자 | \\w |
[A-Za-z0-9_] 와 동일 |
\\w+ |
"word_123" 매칭 |
단어 아님 | \\W |
\\w 이 아닌 문자 |
\\W+ |
"!@# " 매칭 |
공백 문자 | \\s |
스페이스, 탭(\\t ), 줄바꿈(\\n ) 등 |
\\s+ |
" \\t\\n" 매칭 |
공백 아님 | \\S |
공백 아닌 모든 문자 | \\S+ |
"abc123" 매칭 |
단어 경계 | \\b |
단어의 시작/끝 | \\bcat\\b |
"cat" 만 매칭, "category" 는 제외 |
단어 비경계 | \\B |
단어 내부 | \\Bcat\\B |
"concatenate" 내부 매칭 |
줄바꿈 | \\n |
개행 문자(newline) | "a\\nb" → 줄바꿈 포함 |
re.split(r"\\n", "a\\nb") → ['a', 'b'] |
탭 | \\t |
탭 문자 | "a\\tb" |
\\t 부분 매칭 |
캐리지 리턴 | \\r |
줄 처음으로 이동 (윈도우 개행 \r\n) | "a\\r\\nb" |
\\r 매칭 가능 |
벨 소리 | \\a |
알림(bell) 문자 | 거의 사용 X | 문자열 내 제어 문자 |
백스페이스 | \\b |
문자 클래스 안에서는 백스페이스 의미 | [\\b] |
백스페이스 문자 매칭 |
폼 피드 | \\f |
페이지 나눔 문자(form feed) | \\f |
잘 사용 X |
이스케이프 | \\\\ |
\\ 문자 자체 |
"C:\\\\path" |
\\ 자체 매칭 |
점(.) | \\. |
마침표 . 문자 자체 |
r"\\." |
"a.b" → . 매칭 |
별(*) | \\* |
* 문자 자체 |
r"\\*" |
"a*b" → * 매칭 |
더하기(+) | \\+ |
+ 문자 자체 |
r"\\+" |
"a+b" → + 매칭 |
물음표(?) | \\? |
? 문자 자체 |
r"\\?" |
"a?b" → ? 매칭 |
중괄호({}) | \\{ \\} |
{ 또는 } 문자 자체 |
r"\\{3\\}" |
"{3}" 매칭 |
대괄호([]) | \\[ \\] |
[ 또는 ] 문자 자체 |
r"\\[abc\\]" |
문자열 "[abc]" 매칭 |
소괄호(()) | \\( \\) |
( 또는 ) 문자 자체 |
r"\\(ab\\)" |
문자열 "(ab)" 매칭 |
파이프( | ) | ` | ` | ` |
명칭 | 기호 | 의미 | 사용 방법 | 예시 및 결과 |
---|---|---|---|---|
문자열/문장 시작 | ^ |
문자열 또는 줄의 맨 앞 | ^abc |
"abc123" → 매칭, "123abc" → 매칭 안 됨 |
문자열/문장 끝 | $ |
문자열 또는 줄의 맨 뒤 | xyz$ |
"123xyz" → 매칭, "xyz123" → 매칭 안 됨 |
단어 경계 | \\b |
단어의 시작 또는 끝 경계 | \\bcat\\b |
"cat" 매칭, "category" 매칭 안 됨 |
단어 경계 제외 | \\B |
단어 내부, 경계가 아닌 곳 | \\Bcat\\B |
"concatenate" 내부 매칭, "cat" 단독은 매칭 안 됨 |