정규표현식 연습 사이트

https://regexr.com/

정규표현식이란?

종류 탐지율 오탐율
탐욕적 수량자 높음 높음
게으른 수자 낮음 낮음

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" abcdab 부분 매칭
16진법 표기 \\x00 255 이하의 수를 16진법 문자로 표기 "\\x61\\x62" abcdab 부분 매칭
유니코드 표기 \\000 유니코드 문자로 표기 "\\u0061\\u0062" abcdab 부분 매칭
명칭 기호 의미 사용 방법 예시 및 결과
숫자(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" 단독은 매칭 안 됨