개발모음집

정규표현식이란? 본문

Theory

정규표현식이란?

void 2019. 3. 20. 23:24

정규표현식이란?


정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 

정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.


출처 : 위키백과


정 규칙을 가진 문자열의 집합을 표현하는 언어이다

출처 : 네이버 국어사전


정규 : 정식으로 된 규정이나 규범

표현 : 생각이나 느낌 따위를 언어나 몸짓 따위의 형상으로 드러내어 나타냄.

패턴 : 일정한 형태나 양식 또는 유형


즉, 정규표현식이라는 것은 문자열에서 특정 문자를 찾아내는 도구



정규표현식 구성요소


- 메타 문자 : 정규표현식에서 사용하는 기호를 말함

- 패턴 : 주로 패턴(pattern)으로 부르는 정규 표현식은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다.
즉, 메타문자와 추출하고 싶은 문자를 합친 것, 패턴의 양식에 따라 문자열에서 문자를 추출함

예)

문자열 : "012가나다"

메타문자 : /^[]*$/

패턴  : /^[0-9]*$/

추출된 문자 : 012


정규표현식 규칙


정규표현식 중간에는 개행을 해서는 안된다.





표현식

 설명 

 ^

 문자열의 시작

 문자열의 종료

 .

 임의의 한 문자 (문자의 종류 가리지 않음)

 단, \ 는 넣을 수 없음

 *

 앞 문자가 없을 수도 무한정 많을 수도 있음

 앞 문자가 하나 이상

 앞 문자가 없거나 하나있음

 []

 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다.

 {}

 횟수 또는 범위를 나타낸다.

 ()

 소괄호 안의 문자를 하나의 문자로 인식 

 |

 패턴 안에서 or 연산을 수행할 때 사용

 \s

 공백 문자

 \S

 공백 문자가 아닌 나머지 문자

 \w

 알파벳이나 숫자

\W 

 알파벳이나 숫자를 제외한 문자

\d 

 숫자 [0-9]와 동일

\D 

 숫자를 제외한 모든 문자

 정규표현식 역슬래시(\)는 확장 문자
 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미

(?i) 

 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음

▲ 출처 : http://lng1982.tistory.com/141


\v  : 수직 탭


\n  : 개행


\f   : 폼 피드


\r   : 캐리지 리턴


\t   : 탭


\b  : 백스페이스  

\x  : 16진수 숫자와 일치 

\0  : 8진수 숫자와 일치

? : 문자가 없거나, 하나만 있으면 일치



출처: https://ahrang.tistory.com/19 [생계형 개발자 "투지파파"]


더 많은 메타문자 : 

https://shaeod.tistory.com/562

http://www.nextree.co.kr/p4327/

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D


정규표현식 공부하는 방법 참조할 사이트 : https://namu.wiki/w/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D



정규표현식 왜 사용하는가? (없으면 불편한 점)


1. 패스워드 보안때문에, 회원가입할 때 패스워드 규칙을 주기 위해서 (문자열 검열) (없으면 조건문으로 케이스마다 제한을 두는 방법으로 해결해야함.. 코드 길어질듯?)

2. 크롤링할 때, 특정 문자만 긁어오기 위해 필요 (없으면 split(), replace()로 일일이 구현해야할듯?)

3. 사용자가 이미지 업로드할 때, 받고 싶은 확장자만 업로드하기 위해서 (없다면, 이것도 코드적으로 해결해야할듯..)



사용법


사용법은 언어마다 다르다. 자바스크립트에서 사용법을 알아보자.


var pattern = /a/;
var pattern = new RegExp('a');
console.log(pattern.exec('abcdef')); // ["a"]
console.log('abcdef'.match(pattern)); // ["a"]
console.log('abcdef'.replace(pattern, 'A')); // Abcdef

출처 : https://opentutorials.org/course/743/6580




러닝 자바스크립트



소문자로 바꿔주는 메서드 : toLowerCase()

정규식 만드는 방법

const regExp = /going/;

const  regExp = new RegExp("going");



정규식 검색


match, search, exec ,test






// 아이디어로 url / 뒤 부분을 지우자, / 뒷 부분을 추출한 다음 그 문자와 url과 비교하여서 지운다.

        



' Theory' 카테고리의 다른 글

디자인패턴  (0) 2019.04.15
http, websoket, soket.io  (0) 2019.03.21
저장장치비교 (RAM, SSD, HDD)  (0) 2017.12.11
http, https, http1.1, http2  (0) 2017.09.29
webRTC 분석  (0) 2017.09.12