정규표현식 연습 사이트
정규표현식이란?
| 종류 | 탐지율 | 오탐율 | 
|---|---|---|
| 탐욕적 수량자 | 높음 | 높음 | 
| 게으른 수자 | 낮음 | 낮음 | 
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"단독은 매칭 안 됨 |