Skip to content

Latest commit

 

History

History
104 lines (58 loc) · 2.93 KB

Beginner13rd.wiki.md

File metadata and controls

104 lines (58 loc) · 2.93 KB

9/11 (수) / 11:00~ / 진달래

정규표현식 (Regular Expression)

정규표현식이란?

^[_a-zA-Z0-9]+([-+.][_a-zA-Z0-9]+)*@[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*\.[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*$

특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. Text에서 특정한 포맷으로 되어있는 값을 검색/치환해야하는 경우에 쓸 수 있다.

문자열을 토큰으로 변환하는 과정에서 텍스트를 좌에서 우로 검사하면서 여러 규칙과 일치될 문자의 수량을 다양하게 시도하는 처리에 가작 적합할 뿐 파싱에는 적절치 않다.

문법

. : 문자

  • 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다.

\ : 이스케이프

  • 특수 문자를 식에 문자 자체로 포함한다.

¦ : 선택

  • 여러 식 중에서 하나를 선택한다. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함한다.

^ : 부정

  • 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다.

[] : 문자 클래스

  • "["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다.
  • 예를 들면 abcd는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다.

() : 하위식

  • 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다.

* : 0회 이상

  • 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다.

+ : 1회 이상

  • "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다.

? : 0 또는 1회

  • "a?b"는 "b", "ab"를 포함한다.

{m} : m회

  • "a{3}b"는 "aaab"만 포함한다.

{m,} : m회 이상

  • "a{2,}b"는 "aab", "aaab", "aaaab"를 포함한다. "ab"는 포함되지 않는다.

{m, n} : m회 이상 n회 이하

  • "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다.

예제

자연수

^[1-9][0-9]*(\.[0-9]+)?$

실수

^[1-9][0-9]*(\.[0-9]+)?$

주민등록번호

[0-9]{6}-(1|2|3|4)[0-9]{6}

이메일주소

^[_a-zA-Z0-9]+([-+.][_a-zA-Z0-9]+)*@[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*\.[_a-zA-Z0-9]+([-.][_a-zA-Z0-9]+)*$

참고