본문 바로가기

TOPIC

정규 표현식 정리 + 예제

반응형

정규표현식에 대해서 알아보자.

먼저 기본적인 정규표현식의 표현 방법들을 알아보자.

 

그룹 과 범위

문자
| 또는
() 그룹 : 여기서 그룹이란 정규표현식으로 찾은 문자가 해당 괄호안에 포함되는 그룹인지 구분
[] 문자셋, 괄호안의 어떤 문자든지 올수있음
[^] 부정 문자셋, 괄호안의 들어가는 문자가 아닐때만 찾음
(?:) 정규표현식으로 찾지만 해당 그룹은 기억하지 않음

어떤 문자를 찾을 때 abc,abc,abc 같은 반복되는 그룹으로 이루어지는 녀석을 찾고자 할때 필요한 테크닉 이다.

 

수량

문자
? zero or one
* zero or more
+ one or more
{n} n번 반복
{min,} 최소
{min,max} 최소 최대

abc 와 같은 문자는 3개로 구성되어있다. 이러한 문자를 찾고자 할 때 사용하는 테크닉 이다.

 

경계 타입

문자
\b 단어 경계
\B 단어 경계가 아님
^ 문장의 시작
$ 문장의 끝

YMym YMym 처럼 끝이나 앞에 YM또는 ym으로 시작하는 문자를 찾고 싶을 때 사용하는 테크닉 이다.

 

문자열 클래스

문자
\ 특수 문자가 아닌 문자 사용 ex) \?
. 어떤 글자 (줄바꿈 문자 제외)
\d digit 숫자
\D 숫자가 아님
\w word
\W word 아님
\s space
\S space 아님

여러가지 특수 문자들을 의미한다.

기본 적인 정규 표현식의 타입

정규표현식의 타입

플래그

 

플래그(flags)는 정규표현식의 옵션으로 정규식으로 검색하려는 문자 패턴에 추가적인 옵션을 넣어 원하는 문자 검색 결과를 반환하도록 한다.

 

플래그
g 모든 문자 일치
i 영어 대소문자 구분 하지 않고 일치
m 여러 줄 일치

 

이제는 해당 regexr 만 예를 들어서 알아보도록 하겠다.

 

regexr test
일반적으로 그냥 쓰면 해당 단어와 매칭되는 애를 찾아준다.
예시 test hi fire
regexr (test|hi)|(And)
그룹을 사용한다. test hi 는 같은 그룹으로 지정된다. And는 다른 그룹으로 지정된다.
예시 test hi fire And
regexr gr(e|a)y
gr로 시작하면서 e 또는 a가 포함되는 그룹을 가지고 y로 끝나는 단어를 찾는다.
예시 i love gery (gray)
regexr gr(?:e|a)y
위와 마찬가지로 찾는데 그룹으로 지정되지는 않음. 괄호는 비포획 괄호(non-capturing parentheses)라고 불리우고, 정규식 연산자가 같이 동작할 수 있게 하위 표현을 정의할 수 있습니다.
예시 i love gery (gray)
regexr gr[ead]y
대괄호를 이용하면 해당 대괄호 안에 만족하는 모든 문자를 의미한다.
예시 i love gery (gray) grdy grddy
regexr [^a-zA-Z0-9]
알파벳 대소문자 숫자를 포함하지 않은 모든 문자를 찾는다. 여기서는 공백도 찾음. 
예시 hi,there,is!me
regexr gra?y
수량에 대한 거다 ? 의 뜻은 없거나 잇거나이다 비슷하게  * + 표현 방법도 있다.
예시 gray gry bbdy
regexr gra{2,3}y
a라는 문자가 최소 2개 최대 3개 있어야한느 구조다.
예시 gray graay graaay graaaay
regexr Jm\b
단어중에 뒤에서만 쓰이는 Jm을 찾고 싶을 때 사용한다. (멀티라인 옵션에 주의해야함 , 글전체냐 \n 마다 사용할거냐)
예시 Jm jm JmJmJm Jm
regexr Jm\B
대문자를 쓰면 위에 예시와 반대로 동작한다. Jm이 뒤에서 쓰이지 않는 Jm을 가져온다.
예시 Jm jm JmJmJm Jm
regexr .
모든 문자열을 선택 줄바꿈 문자를 제외한
예시 abc
test
abc defwjwido
regexr \[
특수문자를 찾을 때 사용
예시 []?abce[
regexr \d
숫자를 찾는다 마찬가지로 \D 는 숫자가 아닌 것을 찾음. 문자열 클래스 표를 보고 응용 할수 있다.
예시 11abce234

고급 예시

regexr \d{2,3}[- .]\d{3}[- .]\d{4}
전화번호부 표현 방법 
예시 010-8223-0471
010.8223.0471
02 777 7777
regexr [a-ZA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-0].+
이메일 이름 부분은 하나이상 알파벳 대시 점 등을 포함하고 특수기호 .이 있고 다시 영어반복
예시 rebin0471@gmail.com
jm.hong@kakaocorp.com
test@naver.com

 

regexr (?:https?:\/\/)?(?:www\.)?youtube.com\/watch\?v=([a-zA-Z0-9]{11})
유튜브의 식별자만 가져옴 ?: 표식으로 해당영역 그룹은 찾지않는것을 확인할 수 있고 결과적으로 마지막 11번째 코드만 가져온다.
예시 https://www.youtube.com/watch?v=t3M6toIflyQ
http://www.youtube.com/watch?v=t3M6toIflyQ
https://youtube.com/watch?v=t3M6toIflyQ
youtube.com/watch?v=t3M6toIflyQ

마지막으로 정규표현식을 아래와 처럼 확인하고 싶다면

정규표현식 확인 사이트

아래의 사이트에서 확인해보면 된다.

https://regexr.com/5mhou

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

 

이외의 정규 표현식을 연습할려면 다음 사이트로

https://regexone.com/

 

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac

regexone.com

 

좀더 자세한 정규표현식을 알아보려면  mdn에 가서 확인하세요

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions

 

정규 표현식 - JavaScript | MDN

정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다.  이 패턴들은 RegExp의 exec 메소드와 test 메소드  ,

developer.mozilla.org

 

반응형