정규 표현식

intro

egrep 메타 문자

행의 시작과 끝

  • 텍스트 행의 시작과 끝을 나타내는 ^(캐럿)과 $( 달러)
    • 예를 들면 ^cat 는 행이 시작하는 cat만 찾고 cat$ 는 한줄의 끝에있는 scat 과 같은 cat만 찾아낸다.

문자 클래스

  • 여러 문자 가운데 한 문자 매치하기
    • grey, gray 처럼 e 또는 a와 매칭되는 것을 찾을때
      • gr[ae]y
        • [ae] 는 a 또는 e로 해석할수 있다.
    • H[123456] 은 H1, H2의 행과 매치가 된다
    • H[123456] 은 H[1-6] 과 같다
      • [0123456789abcdABCD] 대신에 [0-9a-dA-B] 로 표기 가능하다
  • 예시
    • ^cat$ 의 의미
      • 행 시작 중 cat가 연속으로 있고 그 뒤에 행의 끝이 있는 행에 매치
        • 결국 cat만 있는 행
    • ^$
      • 행 시작 바로 뒤에 행의 끝이 있는 행에 매치
        • 결국 비어있는 행
    • ^
      • 행 시작이 있는 행에 매치
        • 모든 행에 매치됨

부정형 문자 클래스

  • […] 가 아니라 [^…]을 사용하면 주어진 문자를 제외한 모든 문자에 매치됨
    • [^1-6]이라고 하면 1이상 6이하의 숫자르 ㄹ제외한 모든 문자에 매치됨
    • 행의 시작과 끝에서 사용한 문자와 같다.
      • 이 메타 문자도 문맥에 따라 해석하는 의미가 달라진다.

점을 이용하여 임의의 문자에 매치시키는 법

  • [.] 메타문자 점은 임의의 문자에 매치되는 문자 클래스를 줄여서 쓴것임.
    • 이 자리에는 아무 문자나 들어가도 된다.
      • 예를 들어 03/19/76, 03-19-76, 03.19.76 같은 문자열은
        • 03[-./]19[-./]76 -> 와 같이 숫자 사이에 /, -, . 이 들어가도 되고
        • [03.19.76] -> 이렇게 간단히 도 가능하다.
      • 03[-./]19[-./]76 에서 은 문자 클래스 안에 들어있기 때문에 메타 문자로 간주되지 않는다

여러 하위 표현식 중 하나를 찾는 방법

  • 둘중 아무 문자열과 매칭하기 위해선 | 를 이용하면 된다
    • grey, gray 2개중 아무거나 찾기 위해선
      • gr[ea]y 나 gray | grey 나 gr(a | ey) 라고 표현 할수 있다.
        • 괄호를 쓰지 않고 사용하면 다른 문자열 로 인식하기 때문에 괄호를 사용해야한다.
        • 아래는 얼추 같다
          • Jeffrey | Jeffery
          • Jeff(rey | ery)
          • Jeff(re | er)y

대소문자 무시하는 법

  • egrep 실행시 옵션 -i 를 주게되면 무시하게 된다
    • egrep -i `abc | cdf` smaple.txt

image

옵션 아이템

  • color 또는 colour 를 찾는 경우를 생각해 보자.
    • u가 있고 없고인데, 이 경우는 colou?r 을 하면 둘다 찾을 수 있다
    • ? 메타 문자는 옵션을 의미한다.
    • ?는 바로 앞의 아이템에만 적용이 된다.
    • July | Jul 은 July? 로 줄여서 쓸수있다.

기타 수량자 : 반복

  • +
    • 바로 앞에 있는 아이템이 하나 이상 반복 되는것
    • xxx+인 경우 xxx 최대한 여러번 반복해서 매치시키는데, 최소 하나 이상 나와야 한다
  • *
    • 바로 앞에 있는 아이템이 0개 이상 반복 되는 것
    • xxx인 경우 **을 최대한 여러번 반복해서 매치시키는데, 하나도 없어도 되고

글자 개수 지정: 간격

  • 최소값과 최대값을 제공하는 메타 시퀀스가 있다.
  • {3, 12} 라고 하면 최소 3번에서 최대 12번 까지 나오는 것에 매치된다.
    • 아이디를 만들때 숫자와 알파벳소문자, 그리고 - 문자와 _ 문자를 사용하여 최소 5글자에서 최대 15글자까지 만들수 있다라는 조건은 아래처럼 표현 가능하다.
      • ^[-a-z0-9_]{5,15}
  • 참고 image

이스케이프

  • 메타 문자 .을 실제 문자로 인식시키기 위해서 사용되는 \

예제

큰 따옴표 안에 있는 문자열

"[^"]*"
  • 양쪽 끝에 있는 큰 따옴표는 각각 문자열의 앞과 뒤에있는 큰 따옴표와 매치된다.
  • 그 사이에 는 다른 큰 따옴표를 제외한 모든 문자가 들어갈수 있다.
      [^"]
    
    • 이걸로 큰 따옴표를 제외한 임의의 문자열에 매치시키고, 그 뒤에 별표를 추가하여 개수에 재한이 없을을 표시한다.

요약

image

활용

notepad++ 에서 사용해보자

.

Tags:

Categories:

Updated: