상세 컨텐츠

본문 제목

정규 표현식

etc.

by 코딩하는 박줄기 2022. 6. 14. 23:00

본문

728x90
반응형

 

정규 표현식(regexp, regex) 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다.

const text = 'A quick fox';

let regexpLastWord = /\w+$/;
console.log(text.match(regexpLastWord));
// output: Array ["fox"]

let regexpWords = /\b\w+\b/g;
console.log(text.match(regexpWords));
// output: Array ["A", "quick", "fox"]
		
let regexpFoxQuality = /\w+(?= fox)/;
console.log(text.match(regexpFoxQuality));
// output: Array ["quick"]

 

이용

정규 표현식은 다양한 텍스트 처리 작업, 더 일반적으로 문자열 처리에 유용하며 일반적으로 데이터 검증, 데이터 스크래핑(웹 스크래핑), 데이터 랭글링, 단순 파싱, 문법 강조 시스템 개발 등의 작업에 응용됩니다.

 

문법

문법 규칙은 사용 중인 구현체, 프로그래밍 언어, 라이브러리에 따라 다양하다. 또한 정규 표현식 구현체들의 기능은 소프트웨어 버전 간에도 다를 수 있다. 

 

POSIX 기본 및 확장 표준 문법

문자 기능 설명
a 리터럴 문자 a는 단지 'a'와 일치하는 리터럴 문자
. 임의의 한 문자 1개의 문자와 일치. 새 줄을 제외한 모든 문자와 일치시키는 문자
| 불리언 gray|grey는 "gray" 또는 "grey"와 일치
( ) 하위식 abc|adc와 a(b|d)c는 같은 의미
[ ] 문자 클래스 [abc]d는 "ad", "bd", "cd"를 뜻
[a-z]는 "a"부터 "z"까지 중 하나, [1-9]는 1부터 9까지 중의 하나를 의미
[^ ] 부정 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함
[^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미
^ 처음 문자열이나 행의 처음을 의미
$ 문자열이나 행의 끝을 의미
\n 일치하는 n번째 패턴 일치하는 패턴들 중 n번째를 선택, n은 1에서 9 중 하나가 올 수 있다
? 0회 또는 1차례 colou?r는 "color"와 "colour" 둘 다 일치
* 0회 이상 ab*c는 "ac", "abc", "abbc", "abbbc" 등을 일치
+ 1회 이상 ab+c는 "abc", "abbc", "abbbc" 등을 일치시키지만 "ac"는 일치시키지 않는다
{m} m회 정확히 m 번 일치
{m,} m회 이상 m번 이상 일치
{m, n} m회 이상 n회 이하 m번 이상 n번 이하 일치

 

문자 클래스

문자
 
ASCII
설명
 \^
 
  escape 를 표현하며 ^ 를 문자로 사용
 \d
 
[0-9] digit 를 표현하며 숫자
 \D
 
[^0-9] non digit 를 표현하며 숫자가 아닌 문자
 \w
 
[A-Za-z0-9_] word 를 표현하며 "_"를 포함한 영숫자
 \W
 
[^A-Za-z0-9_] non word를 표현하며 "_" 및 영숫자가 아닌 문자문자
 \s
 
[ \t\r\n\v\f] space 를 표현하며 공백 문자
 \S
 
[^ \t\r\n\v\f] non space를 표현하며 공백을 제외한 문자
 \b
 
(?<=\W)(?=\w)|(?<=\w)(?=\W) word boundary를 표현하며 문자와 공백사이
 \B
 
  non word boundary를 표현하며 문자 사이

 

플래그

문자   설명
 i Ignore Case 대소문자를 구별하지 않고 검색
 g Global 문자열 내의 모든 패턴을 검색
 m Multi Line 문자열의 행이 바뀌더라도 검색 계속

 

기본적인 정규식 

   A. 숫자

^[0-9]*$

 

   B. 영문자

^[a-zA-Z]*$
//패턴변경자를 써서 아래와 같이 쓸 수 있다.
/^[a-z]*$/i

 

   C. 영문/숫자

^[a-zA-Z0-9]*$

 

   D. 한글

^[가-힣]*$

//한글 자모 낱자를 포함
^[ㄱ-ㅎㅏ-ㅣ가-힣]*$

 

참고

 

 

 

728x90
반응형

관련글 더보기

댓글 영역