일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- webpack
- 운영체제
- useCallback
- typescirpt
- 처리프로그램
- 제어프로그램
- 오라클
- Migration
- 타입스크립트
- Oracle
- dbms
- roadhog
- sql
- Database
- 데이터베이스
- 서비스프로그램
- 프로덕트관리
- react
- javascript
- 블록체인용어
- 마이그레이션
- react코어
- 코드서울
- 프론트엔드
- 리액트
- 자바스크립트
- typescript
- 선점 스케줄링
- 프로덕트구조
- 감시프로그램
- Today
- Total
Develop+
정규식이란 뭘까! 정규식의 기본적인 문법 본문
정규식이란?
-> 각종 현대적 애플리케이션과 프로그래밍 언어에 사용할 수 있는 특수한 텍스트 패턴.
정규표현식 책에서는 앞에서 설명했던것과는 달리 정규표현식이 무엇인지 정의하지 못한다고 했다.
왜?
어떤 텍스트 패턴이 정규식인지 아닌지를 정확히 판단할 수 있는 공식적 기준이 없기 때문
정규식 기본적인 용어, 문법들.
정규식의 클래스란?
- []대괄호로 묶인 부분을 문자클래스 라고 한다.
부정문자 클래스란?
- 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같은 함수들이 잇는데
이런 함수들이 정규식에 의해서 프로그래밍 되어있는 함수들인지도 궁금해졌다.