작은 메모장

정규표현식 - 정규표현식 개념 본문

KISA 사이버 보안 훈련/YARA 정규표현식 활용

정규표현식 - 정규표현식 개념

으앙내눈 2023. 6. 24. 14:54

정규표현식이란

문자열의 일정한 규칙(패턴)을 표현하는 형식 언어

간단한 규칙을 작성하여 규칙에 맞는 문자열 검색

단순히 득정 문자열의 포함/제외 뿐 아니라 반복 표현 지원

 

그래서 이걸 어케 씀?

아래와 같은 문장을 보자

더보기

정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해

특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다.

여기서, 텍스트라는 단어를 검색하려고 한다.

그러면 /텍스트/g라는 정규표현식을 사용한다.

더보기

정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해

특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다.

근데, 그냥 텍스트가 아니라 앞뒤로 공백이 있는 텍스트라는 단어를 검색하려고 한다.

그러면 \s/텍스트\s/g라는 정규표현식을 사용하여 찾아낼 수 있다.

더보기

정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해

특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다.

 

정규표현식의 사용법

문자열 표현식

 

명칭 기호 의미 사용방법 결과
문자 집합 [     ] 괄호 내 모든 문자 포함 [가나다] A1B2C3D 가나다
부정 집합 [^    ] 괄호 내 모든 문자 제외 [^가나다] A1B2C3D 가나다
범위 [   -   ] 괄호 내 문자 범위 포함 [가-다] A1B2C3D 가나다
. 개행을 제외한 해당 순번의 아무 문자 포함 가. A1B2C3D 가나다라
단어 \w A~z, 0~9, _문자 포함 \w A1B2C3D 가나다라
단어 제외 \W A~z, 0~9, _문자 제외 \W A1B2C3D 가나다라
숫자 \d 0~9 숫자 포함 \d A1B2C3D 가나다라
숫자 제외 \D 0~9 숫자 제외 \D A1B2C3D 가나다라
공백 \s 공백 포함 \s A1B2C3D  가나다라
공백 제외 \S 공백 제외 \S A1B2C3D 가나다라

이스케이프 문자 표현식

명칭 기호 의미 사용방법 결과
예약 문자 표기 \? . ? * + 등의 예약기호를 문자로 표기 5\+ 5+25=32
\t 탭 포함 \tab      abcdef
개행 \n 개행 포함 \nab   
abcdef
8진법 표기 \000 255 이하의 수를 8진법으로 표기 \141\142 abcdefg
16진법 표기 \x00 255 이하의 수를 16진법으로 표기 \x61\x62 abcdefg
유니코드 표기 \u0000 유니코드 문자로 표기 \u0061
\u0062
abcdefg

앵커 표현식

명칭 기호 의미 사용 방법 결과
문장 시작 ^ 문장의 시작 부분 ^5 555 55 555
문장 끝 $ 문장의 끝 부분 5$ 555 55 555
단어 경계 \b 단어 별 경계 부분 5\b 555 55 555
단어 경계 제외 \B 단어 별 경계 부분 제외 5\B 555 55 555

그룹 표현식

명칭 기호 의미 사용 방법 결과
그룹 (       ) 괄호 조건에 탐지된 결과를 메모리에 저장 (.)a aba beb cac ded
참조 \1 메모리의 N번째 그룹 결과를 참조 (.)a\1 aba beb cac ded
참조 제외 그룹 (?:    ) 메모리에 결과를 저장하지 않고 탐지 (?:.)(b)e\1 aba beb cac ded

수량 표현식

기호 의미 사용 방법 결과
* 0개 혹은 그 이상 소[가-힣]* 소나무 장수하늘
+ 1개 혹은 그 이상 소[가-힣]+ 소나무 장수하늘소
{1} 정확히 N개 소[가-힣]{1} 소나무 장수하늘소
{1, 2} 최소 N개, 최대 M개 소[가-힣]{1,2} 소나무 장수하늘소
{1. } 최소 N개 이상 소[가-힣]{0, } 소나무 장수하늘
? 0 혹은 1개 소[가-힣]? 소나무 장수하늘
| OR 소(고|기|나)(무|말|랭) 소나무 장수하늘소

플래그

명칭 기호 의미 사용 방법 결과
플래그 없음 / 마지막 탐색 위치를 유지하지 않고 검색 /abc/ abcd abcd abcd
전체 검색 /g 마지막 탐색 위치를 유지하며 검색 /abc/g abcd abcd abcd
대소문자 구분 안 함 /i 대소문자 구분하지 않음 /abc/gi ABCD abcd abc
다중 라인 검 /m 라인을 개별 문장으로 취급 /^abc/g abcd abcd abcd
abcd abcd abcd
abcd abcd abcd
/^abc/gm abcd abcd abcd
abcd abcd abcd
abcd abcd abcd