정규 표현식 (좀 더) 깊이 알아보기

(A little) Deep Dive into Regular Expressions

Image for post
Image for post
http://xkcd.net/208
# 예문
"안녕하세요, 만나서 반갑습니다."
"그래, 안녕?"
# 정규 표현식
/안녕/
# 결과 http://rubular.com/r/i6kXOgYO9f
"안녕하세요, 만나서 반갑습니다."
"그래, 안녕?"
  • [] : 대괄호 사이에 존재하는 문자들 중 하나에 일치합니다.
  • [^] : 대괄호 사이의 가장 첫 번째 문자로 ^ 문자가 있을 때, 그 문자 이후에 존재하는 문자들을 제외한 모든 문자와 일치합니다.
  • [a-z] : 대괄호 사이에서 특정문자1-특정문자2가 존재할 때, 특정문자1과 특정문자2사이의 모든 문자와 일치합니다. [a-z]의 경우, a 부터 z까지 모든 영문자 소문자와 일치합니다.
  • ^ : 대괄호 사이에 존재할 때는 부정을 나타내지만, 대괄호 밖에서는 문자열의 시작과 일치합니다.
  • $ : ^와 반대로, 문자열의 끝과 일치합니다.
  • * : 앞에 존재하는 문자가 0번 혹은 그 이상 반복되는 문자를 찾을 때 사용합니다.
  • + : 앞에 존재하는 문자가 1번 혹은 그 이상 반복되는 문자를 찾을 때 사용합니다.
  • ? : 앞에 존재하는 문자가 있을 수도, 없을 수도 있을 때 사용합니다.
  • \ : . 혹은 [] 등 특수한 목적으로 사용되는 메타 문자를 문자열에서 찾고 싶을 때, 메타 문자를 문자 그대로 사용할 수 있도록 변환해주는 기호입니다. .은 모든 문자와 일치하지만, \.의 경우, .문자와 일치합니다.
# 예문
"안녕하세요, 만나서 반갑습니다."
"그래, 안녕?"
# 정규 표현식
/[가-힣]+/
# 결과 http://rubular.com/r/iwUTQOIMuN
"안녕하세요, 만나서 반갑습니다."
"그래, 안녕?"
  • \w : 영문자 및 _ 문자와 일치합니다.
  • \s : 여러 가지 공백 문자와 일치합니다. (* 스페이스, 탭, 기타… 공백 문자)
  • \S : 공백 문자를 제외한 문자와 일치합니다.
  • \W : 영문자 및 _ 문자를 제외한 문자와 일치합니다.
# 예문
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
# 정규 표현식
\w\w\w
# 결과 http://rubular.com/r/UfgMxPRDdi
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
  • {n, m} : 앞에 존재하는 문자가 n번 이상 m번 이하 반복되는 문자와 일치합니다.
  • {n,} : 앞에 존재하는 문자가 n번 이상 반복되는 문자와 일치합니다.
# 예문
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
# 정규 표현식
\w{3}
# 결과 http://rubular.com/r/x8IiwvgbG8
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
  • +?
  • {n,}?
# 예문
internationalization
# 정규 표현식
i\w+n
# 결과 http://rubular.com/r/em8RaHlnq9
internationalization
# 예문
internationalization
# 정규 표현식
i\w+?n
# 결과 http://rubular.com/r/fr6Ejzal0N
internationalization
# 예문
<h1>이것은 첫 번째 제목</h1>
<h2>이것은 두 번째 제목</h2>
<h3>이것은 세 번째 제목</h3>
<h4>It's also right heading</h4>
<h5>이것은 올바르지 않은 제목</h6>
# 정규 표현식
<(h[1-6])>[가-힣\w\s']+<\/\1>
# 결과 http://rubular.com/r/ZF58XxDYVw
<h1>이것은 첫 번째 제목</h1>
<h2>이것은 두 번째 제목</h2>
<h3>이것은 세 번째 제목</h3>
<h4>It's also right heading</h4>

<h5>이것은 올바르지 않은 제목</h6>
  • (?<=) : 후방탐색. 후방탐색 표현식 (?<=) 사이에 표현식을 넣고, 찾고자 하는 표현식을 작성합니다. 후방탐색 표현식을 통해 문자가 존재하고, 그 뒤에 찾고자 하는 문자가 존재할 때 일치합니다. 전방탐색과 유사하죠.
  • (?<!) : 부정형 후방탐색. 후방탐색과 반대로, 부정형 후방탐색 내의 표현식이 일치하지 않고, 찾고자 하는 문자가 존재할 때 일치합니다.
# 예문
2400원
3600원
28392830원
238493엔
원2839283
# 정규 표현식
\d+(?=원)
# 결과 http://rubular.com/r/XrZGoLjUbm
2400
3600
28392830
238493엔
원2839283
# 예문
12345
12.3456
(120.293)
(18729.28
2839283)
# 정규 표현식
(\()?\d+(\.\d+)?(?(1)\))
# 결과 http://rubular.com/r/H2pt3TCCqF
12345
12.3456
(120.293)

(18729.28
2839283
)

Software Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store