2014년 10월 7일 화요일

[Regular Expression] 정규 표현식 소개

정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 언어입니다.
Regexp or Regex로 줄여서 말하기도 합니다.

이를 이용하여 문자열을 검색하거나 치환하는 것으로 응용할 수 있습니다.

이제 정규표현식의 규칙을 살펴보겠습니다.

문자
설명
비고
*
앞의 문자나 부분식을 0개 이상 찾음
{0, }과 같음
+
앞의 문자나 부분식을 1개 이상 찾음
{1, }과 같음
?
앞의 문자나 부분식을 0개나 1개 찾습니다
{0, 1}과 같음
.
\n을 제외한 모든 글자를 의미

[a-z]( [^a-z])
[ ]안의 범위에 해당하는 문자를 검색([ ]안의 범위에 해당하지 않는 문자를 검색)
범위를 특정 값으로 정할 수도 있음
) [abc]
\b(\B)
단어와 공백 사이의 위치를 검색(\b를 제외한 전부를 검색)

\d(\D)
숫자를 의미

\n
줄바꿈 문자를 의미

\r
캐리지 리턴 문자를 의미

\s(\S)
공백, 탭 용지 공급 등 모든 공백문자를 의미(공백을 제외하는 것을 의미)

\t
탭 문자를 의미
`
^
문자열의 시작위치에서 검색

$
문자열의 끝 위치에서 검색

{n}
{}앞에 글자를 n개 반복함을 의미

{n,m}
n m 사이의 수만큼 반복함을 의미

\
다음에 오는 문자를 특수문자, 리터럴, 역참조, 8진수, 이스케이프로 인식

(pattern)
패턴을 체크하고 체크한 값을 변수로 저장

(?:pattern)
패턴을 체크하고 체크한 값을 변수로 저장하지 않음




 규칙만 읽어보면 아직 뭐라는 건지, 어떻게 찾는 지 감이 잘 오지 않습니다.

 http://www.regexr.com/ 에서 온라인으로 정규 표현식을 연습할 수 있습니다.


http://www.regexr.com: 사이트 화면


 다음 글에서는 예를 통해 정규 표현식과 YARA를 이용하여 특정문자열을 검색하는 rule을 작성해 보겠습니다.  :-)

댓글 없음:

댓글 쓰기