해킹/웹해킹

정규표현식 / 주로 사용하는 정규표현식

2021. 6. 6. 02:59
목차
  1. 정규표현식이란?
  2. 예제
728x90

정규표현식이란


정규표현식이란?

정규표현식이란 사전적인 의미로는 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어 입니다. 주로 Prog ramming Language나 Text Edittor등 에서 문자열의 검색과 치환을 위한 용도로 사용되고 있습니다. 이 정규표현식은 코드가 간단한 만큼 가독성이 매우 떨어 외우거나 보고 하지 않으면 이해하기 힘들다는 문제점이 있습니다.

 

정규 표현식의 용어들

정퓨 표현식에서 사용되는 기호들을 Meta문자라고 표현합니다.

표현식 의미
^x 문자열의 시작을 표현하며 x 문자로 시작됨을 의미합니다.
x$ 문자열의 종료를 표현하며 x 문자로 종료됨을 의미합니다.
 .x 임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미합니다.
x+ 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미합니다.
x? 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미합니다.
 x* 반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미합니다.
 x|y or 를 표현하며 x 또는 y 문자가 존재함을 의미합니다.
 (x) 그룹을 표현하며 x 를 그룹으로 처리함을 의미합니다.
 (x)(y) 그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x, y 는 각 그룹의 데이터로 관리됩니다.
(x)(?:y) 그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음을 의미합니다.
x{n} 반복을 표현하며 x 문자가 n번 반복됨을 의미합니다.
x{n,} 반복을 표현하며 x 문자가 n번 이상 반복됨을 의미합니다.
x{n,m} 반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미합니다.

 

Meta 문자들 중에서 좀 더 특수하게 사용되는 문자들이 존재합니다. [] 는 내부에 지정된 문자열의 범위 중에 한 문자만 선택한다는 특수한 의미를 가집니다.

 

표현식 의미
[xy] 문자 선택을 표현하며 x 와 y 중에 하나를 의미합니다.
 [^xy] not 을 표현하며  x 및 y 를 제외한 문자를 의미합니다.
 [x-z] range를 표현하며 x ~ z 사이의 문자를 의미합니다.
\^ escape 를 표현하며 ^ 를 문자로 사용함을 의미합니다.
 \b word boundary를 표현하며 문자와 공백사이의 문자를 의미합니다.
\B non word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미합니다.
 \d digit 를 표현하며 숫자를 의미합니다.
 \D non digit 를 표현하며 숫자가 아닌 것을 의미합니다.
 \s space 를 표현하며 공백 문자를 의미합니다.
 \S non space를 표현하며 공백 문자가 아닌 것을 의미합니다.
\t tab 을 표현하며 탭 문자를 의미한합니다.
\v 새로 탭 문자를 찾습니다. 
\w word 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미합니다.
\W non word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미합니다.

정규표현식을 사용할 때 Flag라는 것이 존재하는데 Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 됩니다.

Flag 의미
 g Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미합니다.
i Ignore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미합니다.
m Multi line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미합니다.

 

예제

/[0-9]/g
전체에서 0~9 숫자중에 '하나'만의 숫자를 찾음
/[no]/g
전체에서 'n'또는 'o'중 '하나'만의 문자를 찾음

<이메일 예시>

/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i

0~9사이 숫자 또는 a~z A~Z 알페벳중 하나로 시작하고 중간에 - _ \ . 이 존재할 수 있으며
0~9 a~z A~Z 반복할 수 있다. 다음으론 반드시 @가 와야하고 0~9 a~z A~Z중 하나가 존재해야하고
그 뒤로는 - _ \ . 이 존재할 수 있으며 0~9 a~z A~Z 반복할 수 있다. 다음으론 . 이 반드시 존재해야 하고
a~z A~Z가 2개~3개 존재해야한다. 이 모든 정규식은 대/소문자 구분하지 않는다.

 

 

참고:

https://hamait.tistory.com/342

https://choseongho93.tistory.com/130

728x90
저작자표시 비영리

'해킹 > 웹해킹' 카테고리의 다른 글

[LOS] 3번 goblin write up  (0) 2021.06.06
[LOS] 2번 cobolt write up  (0) 2021.06.06
[LOS] 1번 gremlin write up  (0) 2021.06.06
SQL Injection  (0) 2021.06.03
xss-game level3 write up  (0) 2021.06.02
  1. 정규표현식이란?
  2. 예제
'해킹/웹해킹' 카테고리의 다른 글
  • [LOS] 3번 goblin write up
  • [LOS] 2번 cobolt write up
  • [LOS] 1번 gremlin write up
  • SQL Injection
나봄하랑
나봄하랑
저의 IT 성장을 담은 블로그 입니다!
나봄하랑
나의 IT 성장일지
나봄하랑
전체
오늘
어제
  • 분류 전체보기 (60)
    • 기능반공부 (26)
      • 서버 (6)
      • 네트워크 (6)
      • 클라우드 컴퓨팅 (12)
      • 기능경기대회 (2)
    • 알고리즘 (7)
      • 자료구조 (4)
      • C, C++ (3)
      • python (0)
    • 해킹 (22)
      • 웹해킹 (7)
      • 리버싱 (7)
      • 시스템해킹 (8)
    • 게임이론 (0)
      • 체스 (0)
      • 마작 (0)
    • 웹개발 (1)
      • 웹(HTML, CSS, JS) (1)
    • 공부 (4)
      • 영어 (3)
      • 과학 (0)
      • 국어 (1)
      • 한국사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • about

공지사항

인기 글

태그

  • server
  • 모의고사
  • reversing
  • 스트링
  • CTF
  • 버그
  • 아마존
  • computting
  • CC
  • FSB
  • 시스템해킹
  • Cloud
  • SSM
  • AWS
  • grabcon
  • 네트워크
  • 백준
  • 컴퓨팅
  • 클라우드
  • 클컴
  • computing
  • 서버구축
  • injection
  • BOF
  • SQL
  • Network
  • 해킹
  • 리버싱
  • Los
  • 레지스터

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
나봄하랑
정규표현식 / 주로 사용하는 정규표현식
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.