REGEX -Introduction POSIX BRE ERE EBNF

 

###1. Regular Expression (정규표현식)  ==  REGEX (리젝스) == RE 

##1. string pattern은 문자열의 조합되는 규칙

##2. meta character 는 다른 의미를  수식하는 특수한 문자들을 정의한 예약어와 흡사하다.

##3. grep : 정규식 평가할 수 있는 유틸리티 ( egrep, fgrep  는 grep 특화버전)

##4. sed: stream editor

##5. awk : 패턴식을 다룰 수 있는 언어 툴

 

 

##1. string pattern은 문자열의 조합되는 규칙

#1.  문자열 중 일정 규칙이 존재하는 경우

 1) email:

    1) 계정명 + @  + dot(.) + 영문,  아스키코드로 이루어짐

 2) web url

    1) http:// 시작

    2)  host 이름 뒤엔 URI가 붙고 디렉토리구조로 명명

 3) IPv4

    1)  111.222.111.222 의 4개 숫자로 이루어짐    (0~255 값으로 이루어짐)

 

REGEX 예제

a.cdef?
[a-zA-Z]+
.*boy
(caret|dollar)
\(.*/\)[^/]*
^Do.*\?$
http://\([a-zA-Z0-9.-]\)/.*
https?://.*\?(.*)

#2 REGEX 종류

1) POSIX REGEX : UNIX 계열 표준 정규표현식( 이거 다룸)

2) PCRE :Perl 정규표현식 호환으로 확장된 기능가짐   // POSIX REGEX 기반으로 만들어짐

 

#3 POSIX REGEX

1) BRE (Basic RE), ERE (Extended RE) 가 존재.

 

A) BRE : Basic REGEX ==> grep이 작동되는 기본값.

B) ERE: Extended REGEX 

==> 더 많은 표현식과 편의성 제공

==> egrep가 작동되는 기본값

 

#4 PCRE (Perl Compatible Regular Expression)

1) 우수한 성능 (POSIX REGEX 보다 좋음)

2) c언어 기반

3) PCRE2 버전 으로 개정됨

 

#5 REGEX and EBNF

https://talkingaboutme.tistory.com/entry/Study-Extended-Backus-Naur-Form-EBNF

 

[Compiler] Extended Backus-Naur Form (EBNF)

지난 포스트를 통해서 Context Free Grammar에 대해 다뤘다. 간단히 요약해보자면 Regular Expression으로 표현하기 힘든 문법들이 존재하기 때문에 표현하기 위한 대체 방안으로 CFG를 언급했고, 여기서 Syn

talkingaboutme.tistory.com

 

 

 

###2. grep

grep options

  • machers
  • color

정규표현식을 통해 이를 테스트하거나 필터링 할 시 사용하는 세가지

grep, sed, awk

grep : REGEX 평가 유틸리티

sed : stream editor

awk: 문자열 관련한 기능들을 가진 프로그래밍 언어 (제일 많은 기능 가짐)

 

grep >>>  sed >>> awk 순으로 공부하기.

 

##1 grep :  matcher selection

#1. grep 실행 시 matcher를 고를 수 있음

-G BRE를 사용해 작동(default)
-E ERE 사용하여 작동 (egrep로 작동시킨 것과 같음)
-P PCRE 사용하여 작동 (pcre2grep 로 작동시킨것과 같음)
-F 고정길이 문자열 탐색하는 모드로 작동 (fgrep 와 같음)
속도가 빠름

#2 grep 주요옵션

1) --color : 매칭 성공 시 highlight 색 으로 표현해줌

2) -o : 매칭 영역을 잘라서 보여줌

3) -e PATTERN : 패턴이 연달아 나올때 사용, 잘 사용안함

4) -v, --invert-match  : 매칭 실패한걸 보여줌  (일반적으로 v는 verbose나 version 확인 용도지만 grep은 invert match 기능 용도) 

5) -c

6) -q , --quite

 

해당 내용은  프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.

+ Recent posts