[Linux] 리눅스 정규표현식 예제 / Regex Cheat Sheet Download

SYSTEM/Linux / /

정규표현식 이란?


regular expression

 

Regular Expression(정규표현식)은 일종의 문자를 표현하는 공식으로, 특정 규칙이 있는 문자열 집합을 추출할 때 자주 사용되는 기법. 주로 Prograaming Language나 Text Editor등에서 문자열의 검색과 치환을 위한 용도로 사용됩니다. 정규 표현식, 또는 줄여서 regex 특히 텍스트 파일을 처리할 때 텍스트 문자열을 검색하고 조작하는 데 매우 강력합니다. 한 줄의 정규식은 수십 줄의 프로그래밍 코드를 쉽게 대체할 수 있습니다. Regex는 모든 스크립팅 언어(예: Perl, Python, PHP 및 JavaScript)에서 지원됩니다. 뿐만 아니라 Java와 같은 범용 프로그래밍 언어 텍스트 검색을 위한 Word와 같은 워드 프로세서도 있습니다.

 

 

자주 쓰이는 대표적인 정규표현식 예제(regex example)에 대하여 알아봅니다.

 

1. 정규표현식 구문 요약


\ = 백슬래시

 

1) 문자 (Character)

 

regex에서 특별한 의미를 갖는 문자를 제외한 모든 문자는 자신과 일치.

 

정규식 x은 하위 문자열 "x" 와 일치

정규식 9 -> "9"

정규식 = -> "="  

정규식 @ -> "@"


2) 특수 정규식 문자 (Special Regex Character

 

아래 문자는 정규식에서 특별한 의미를 가짐

., +, *, ?, ^, $, (, ), [, ], {, }, |, \.

 

3) 이스케이프 시퀀스( \char )


정규식에서 특별한 의미를 가진 문자를 일치시키려면 백슬래시(\)와 함께 이스케이프 시퀀스 접두사를 사용.

\. matches "."

regex \+ matches "+"

regex \( matches "(".

regex \\ to match "\"

 

4) A Sequence of Characters(String) 

 

문자열은 일련의 문자(하위 표현식이라고 함)를 결합하여 일치시킬 수 있습니다.

예를 들어, 정규식 Saturday는  "Saturday". 기본적으로 일치는 대소문자를 구분하지만 modifier 를 통해 대소문자를 구분하지 않도록 설정할 수 있습니다 .

 

5) OR 연산자( | )

 

예를 들어 정규식 two|2 는 문자열 "two" 또는 "2" 

 

6) 문자 클래스(또는 대괄호 목록) 


[...] : 대괄호 안에 있는 문자 중 하나를 의미 
[.-.] (범위 표현식): 범위에 있는 문자 중 하나를 의미 

예를 들어 [0-9]모든 숫자와 일치합니다. [A-Za-z]모든 대문자 또는 소문자와 일치

 

7) 발생 표시기(Repetition Operators) 


+ : 하나 이상의 ( 1+), 예를 들어 , 와 [0-9]+같은 하나 이상의 숫자를 의미.  예 '456', '102'
* : 0개 이상( 0+), 예를 들어 [0-9]*0개 이상의 숫자와 일치합니다. [0-9]+빈 문자열과 함께 모든 것을 의미.
? : 0 또는 1(선택 사항), 예를 들어 선택적 , 또는 빈 문자열 [+-]?과 일치 합니다. "+""-"
{m,n} : m~까지 n(둘 다 포함)
{m} : 정확히 m시간
{m,} : m이상( m+)

 

8) Metacharacters : 문자와 일치


. (점): 개행을 제외한 모든 문자. 와 동일[^\n]
\d , \D : 하나의 숫자/숫자가 아닌 문자. 숫자는[0-9]
\w , \W : 하나의 단어/비단어 문자. ASCII의 경우 단어 문자는[a-zA-Z0-9_]
\s , \S : 하나의 공백/공백이 아닌 문자. ASCII의 경우 공백 문자는[ \n\r\t\f]

 

9) 위치 앵커 (Position Anchors)

 

문자와 일치하지 않지만 행 시작, 행 끝, 단어 시작 및 단어 끝과 같은 위치와 일치.
^ , $ : 각각 줄의 시작과 줄의 끝. 예: ^[0-9]$숫자 문자열과 일치.
\b : 단어의 경계, 즉 단어의 시작 또는 끝. 예를 들어, 입력 문자열 \bcat\b의 단어와 일치 합니다. "cat"
\B : \b의 역. 즉, 단어의 시작이 아니거나 단어의 끝이 아님.
\< , \> : 각각 단어의 시작과 끝, 와 유사합니다 \b. 예를 들어, 입력 문자열 \<cat\>의 단어와 일치 합니다. "cat"
\A , \Z : 각각 입력 시작 및 입력 끝.

 

10) 괄호로 묶인 역 참조 


( )역참조를 생성 하려면 괄호 를 사용
$1, $2, ...(Java, Perl, JavaScript) 또는 \1, , ...(Python)를 사용 \2하여 역참조를 순차적으로 검색

 

 

 

2. Regex Example


\ = backslash

 

 

1) 핸드폰 번호와 일치하는 정규식 패턴

 

/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/

 

 

2) 날짜 패턴

 

 (\\d{2}).(\\d{2}).(\\d{4})

 

3) URL 패턴

 

(https?)://(www)?.?(\\w+).(\\w+)/?(\\w+)?

 

4) email 패턴

 

([a-zA-Z0-9\\_\\-\\.]+)@([a-zA-Z]+).(.+)

 

5) 한글만 일치 패턴

 

/^[가-힣]+$/ 

 

 

6) 영문만 일치 패턴

 

/^[a-zA-Z]+$/ 

 

7) 숫자 알파벳 일치 패턴 

 

/^[a-zA-Z0-9]+$/

 

8) JUMIN증번호 일치 패턴

 

/^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/

 

9) 한글 이름 일치 패턴

 

/^[가-힣]{2,4}$/

 

10) 비밀번호 (최소8자리이상, 대문자1개이상, 소문자 1개이상, 숫자1개이상, 특수문자1개이상) 패턴

 

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}/

 

반응형

 


 

 

 

정규식 치트 시트 정리문서 다운로드 받기

Download Regex Cheat Sheet

 

Regex Cheat Sheet.pdf
0.10MB

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기