Develop+

정규식이란 뭘까! 정규식의 기본적인 문법 본문

카테고리 없음

정규식이란 뭘까! 정규식의 기본적인 문법

Sunny Buddy 2023. 1. 15. 17:35
728x90

 

정규식이란?

-> 각종 현대적 애플리케이션과 프로그래밍 언어에 사용할 수 있는 특수한 텍스트 패턴.

 

정규표현식 책에서는 앞에서 설명했던것과는 달리 정규표현식이 무엇인지 정의하지 못한다고 했다.

왜?

어떤 텍스트 패턴이 정규식인지 아닌지를 정확히 판단할 수 있는 공식적 기준이 없기 때문

 

정규식 기본적인 용어, 문법들.

정규식의 클래스란?

- []대괄호로 묶인 부분을 문자클래스 라고 한다.

 

부정문자 클래스란?

- NOT과 같은 의미

정규식<q[^u]> 의 의미는

u가 뒤에 있지 않은 q (X)

u이외의 문자가 뒤에 있는 q (O)

lraq is a country -> q뒤에 space공백이 들어있기 때문에 일치

 

하이픈을 사용하는경우

두 문자 사이에 범위를 형성

[A-z]는 아스키표에 있는 대문자A-z사이의 모든 문자를 포함.

 

정규식 약기문자 클래스

[\d]

- 숫자를 선택할 때 사용.

대표사진 삭제

사진 설명을 입력하세요.

소문자를 사용할때에는 숫자를 선택하지만 d를 D로 바꿀때,

대문자를 사용할때에는 소문자와의 정반대의 의미를 가지게 된다.

 

ex)

[\D]

대표사진 삭제

사진 설명을 입력하세요.

숫자를 제외한 모든 문자를 선택함

[\D] = [^\d] 와 같음.

 

[\w]

- 단어문자 1개를 선택할때 사용

(단어문자 = 단음문자, 숫자, 언더바)

대표사진 삭제

사진 설명을 입력하세요.

[\W]대문자를 사용할 경우

대표사진 삭제

사진 설명을 입력하세요.

 

[\s]

- 모든 공백문자를 선택

(공백문자 = 빈칸, 탭, 개행문자)

 

[.]

-마침표는 개행문자를 포함한 모든문자를 선택할 수 있고, 개행문자를 제외하고도 가능.

[.] 정규식은 [\s\S] 코드와도 동일

s= 공백을선택, S공백이 아닌 모든 숫자,문자,기호를 선택하기 때문.

 

>> 마침표 기호가 오용되는 가장 많은 케이스는 날짜추출.

 
사진 삭제

사진 설명을 입력하세요.

\d\d.\d\d.\d\d

이 정규식을 사용했을때 '.'(모든문자) 가'/'와 일치하게 된다.

 

 

But!!

'.' 는 숫자와도 일치하기때문에 날짜만을 추출하는 경우에 12345678 이라는 숫자까지 같이

일치하게됨.

 

마침표가 오용된 정규식 수정.

 
사진 삭제

사진 설명을 입력하세요.

\d\d.\d\d.\d\d로 되어있는 정규식을

\d\d[/.\-]\d\d[/.\-]\d\d

이렇게 바꾸어 주면 된다.

 

정규식을 해석해 보자면

\d(숫자)*2 에 "/또는 .또는 -" \d(숫자)*2 에 "/또는 . 또는 -\d(숫자)*2

이렇게 해석할 수 있다.

 

오자가 포함된 단어 추출

 
사진 삭제

사진 설명을 입력하세요.

 

calendar 을 검색시 오자가 포함된 단어를 추출 하는방법은 간단하다.

c[ae]l[ae]nd[ar]r

위의 가로안의 문자가 하나라도 있는경우 단어가 일치한다.

cal의 a가 일치, len의 e가 일치 ,dar의 a가 일치 하여 단어를 찾을 수 있다.

 

 

정규식 맛보기를 작성하면서

많은 프로그래밍 언어에 Split, Replace, Find같은 함수들이 잇는데

이런 함수들이 정규식에 의해서 프로그래밍 되어있는 함수들인지도 궁금해졌다.

 

728x90