시스템sw및실습

[시소실] 10-1. Regular Expression

leziwn.cs 2023. 11. 21. 23:01
Regular Expression (정규식)

Regular Expression, 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: 파일에서 pattern과 일치하는 패턴을 찾아라.

▷ grep -v ^$ file

  • grep: 패턴을 찾아라.
  • -v: 패턴과 일치하지 않는 라인을 찾아라.
  • ^$: 공백 라인
    - ^: 라인의 시작
    - $: 라인의 끝
    --> 라인이 시작하는 동시에 끝인 것 == 공백라인
  • file: file이라는 이름의 파일에서.

--> file에서 공백라인이 아닌 라인을 찾아라. (공백라인을 제거하라.)

 

▷ grep -v ^$ file > newfile

--> file에서 공백라인이 아닌 라인을 찾아서 newfile에 저장하라.

 

 

Regular Expression 메타문자

 

  • c\{3}: ccc
  • c\{3,}: ccc, cccc, ccccc ...
  • c\{3,5}: ccc, cccc, ccccc

 

▶ \(e\) --- 정규식을 하나의 문자처럼 묶는다.

  • \(abc\)* --- abc가 0회 이상 반복

 

▶ \n --- 정규식 내의 n번째 \(e)\와 매치된다.

\2 == dd (두 번째)

: a가 3~5번 나오고, b가 짝수 번 나오고, c가 1번 나오고, d가 홀수 번 나오고, edd.

 

 

 

 

 

출처: 이화여자대학교 권진욱교수님 시스템sw및실습