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
해당 내용은 프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.
'프로그래머스 > 리눅스' 카테고리의 다른 글
참고 (0) | 2022.11.07 |
---|---|
리눅스 기초(4-7) Bash 기초 b (0) | 2022.11.07 |
리눅스의 기초(4-5) ssh server (0) | 2022.11.06 |
리눅스의 기초 (4-4) Linux Admin - 네트워크 설정 ( 매니저) (0) | 2022.11.06 |
리눅스 기초(4-3) Linux Admin#2 APT (0) | 2022.11.06 |