[시소실] 10-1. Regular Expression
Regular Expression (정규식)
Regular Expression 메타문자
▶ . --- Any single character
- a.c --- a와 c 사이에 any single character
예) abc, acc, a?c ...
▶ * --- 0회 이상 반복
- a*c --- a가 0회 이상 반복된다.
예) c, ac, aac ...
▶ \ --- 메타문자 탈출
- a\.c --- a.c에서 .이 .으로 인식된다.
▶ ^ --- 라인의 시작 (정규식의 첫 문자로 쓰인 경우에만)
- ^abc --- 라인의 가장 앞에 abc가 나오는 패턴
- abc^ --- 그냥 abc^ (^는 중간에 나오면 메타문자로 쓰이지 않는다.)
▶ $ --- 라인의 끝 (정규식의 마지막 문자로 쓰인 경우에만)
- abc$ --- 라인의 가장 끝이 abc로 끝나는 패턴
- ab$c --- 그냥 ab$c ($는 중간에 나오면 메타문자로 쓰이지 않는다.
▶ [ ] --- 괄호 안에 있는 임의의 character 하나와 매칭된다.
- a[abcd]c == aac, abc, acc, adc
Cf) [ ] 안에서는 메타문자의 성질을 잃는다.
- [a*c] --- 메타문자의 성질을 잃는다. (a가 0번 이상 반복됨을 의미하지 않음)
- [a.c] --- 메타문자의 성질을 잃는다. (a와 c 사이에 any single character를 의미하지 않음)
▶ - --- [ ] 안의 중간에 위치하여 range를 뜻하는 메타문자로 사용된다.
▶ ^ --- [ ] 안의 처음에 위치하여 negation을 뜻하는 메타문자로 사용된다.
- [a-z] --- a~z까지의 임의의 character 1개
- [^a-c] --- a~c까지의 임의의 character가 아닌 any single character
- [a^bc] --- ^가 중간에 나오면 메타문자로서 기능하지 않는다.
예) grep -v ^$ file > newfile
▷ grep -v ^$ file
- grep: 패턴을 찾아라.
- -v: 패턴과 일치하지 않는 라인을 찾아라.
- ^$: 공백 라인
- ^: 라인의 시작
- $: 라인의 끝
--> 라인이 시작하는 동시에 끝인 것 == 공백라인 - file: file이라는 이름의 파일에서.
--> file에서 공백라인이 아닌 라인을 찾아라. (공백라인을 제거하라.)
▷ grep -v ^$ file > newfile
--> file에서 공백라인이 아닌 라인을 찾아서 newfile에 저장하라.
- c\{3}: ccc
- c\{3,}: ccc, cccc, ccccc ...
- c\{3,5}: ccc, cccc, ccccc
▶ \(e\) --- 정규식을 하나의 문자처럼 묶는다.
- \(abc\)* --- abc가 0회 이상 반복
▶ \n --- 정규식 내의 n번째 \(e)\와 매치된다.
: a가 3~5번 나오고, b가 짝수 번 나오고, c가 1번 나오고, d가 홀수 번 나오고, edd.
출처: 이화여자대학교 권진욱교수님 시스템sw및실습