Linux 학습 11 - 정규 표현 식

4462 단어
정규 표현 식
1. 프로필
정규 표현 식 은 텍스트 문자열 이나 패턴 을 설명 하 는 방식 입 니 다. 프로그램 은 이 패턴 을 임의의 텍스트 문자열 과 일치 시 켜 강력 한 검색 능력 을 제공 할 수 있 습 니 다.
2. 지원 하 는 프로그램
grep, sed, awk, vim, less, nginx, varnish 등
3. 분류
  • 기본 정규 표현 식: BRE (basic regular expression)
    인 정 된 메타 문자 만 ^, $, [], * 기타 문자 가 일반 문자 로 인식 되 었 습 니 다.
  • 확장 정규 표현 식: ERE (extended regular expression)
    () (곶? + | 추가등 특수 문자

  • 4. 기본 용법
    정규 표현 식 은 문자 와 연산 으로 구 축 된 것 이 며, 메타 문 자 를 통 해 확장 되 며, 대부분의 문 자 는 자신 과 일치 하 며, 대부분의 메타 문 자 는 반드시 역 슬 래 쉬 \ 를 사용 하여 의 미 를 바 꿔 야 합 니 다.정규 표현법 을 사용 할 때 는 어족 에 유의 해 야 한다. 어족 에 따라 인 코딩 데이터 가 다 르 기 때문에 우 리 는 LANG = C 를 자주 사용한다.
    일반 문자
    알파벳, 숫자, 밑줄, 특별한 정의 가 없 는 기 호 는 모두 일반 문자 입 니 다. 표현 식 의 일반 문 자 는 문자열 과 일치 할 때 같은 문자 와 일치 합 니 다.
     1:   “c”,      “zbcde” ,     ’c’
    •    
    

    기호.
    속뜻
    .
    임의의 단일 문자 일치
    [ ]
    지정 한 범위 내의 임의의 단일 문자 와 일치 합 니 다.
    [^]
    지정 한 범위 밖의 임의의 단일 문자 와 일치 합 니 다.
    [:alnum:]
    자모 와 숫자
    [:alpha:]
    모든 영문 대소 문자, 즉 a - z, A - Z 를 대표 합 니 다.
    [:lower:]
    소문 자
    [:upper:]
    대문자
    [:blank:]
    공백 문자 (공백 과 탭 문자)
    [:space:]
    수평 과 수직 공백 문자
    [:cntrl:]
    인쇄 할 수 없 는 제어 문자 (체크, 삭제, 비상벨)
    [:digit:]
    십진수
    [:xdigit:]
    16 진수
    [:graph:]
    인쇄 가능 한 비 공백 문자
    [:print:]
    인쇄 가능 문자
    [:punct:]
    문장 부호
    문자 전의
    쓰기 불편 한 문자 들 은 앞 에 '\' 를 붙 이 는 방법 을 사용한다.
    표현 식
    일치 가능
    \r,
    대표 님, 차 와 환 행.
    \t
    탭 문자
    \
    대표
    또 일부 특수 한 용도 가 있 는 기호 가 있 는데, 앞 에 '\' 를 넣 으 면 이 기호 자 체 를 대표 한다.예 를 들 어 ^, $,. 등 전의 문자 의 일치 방법 은 일반 문자열 과 유사 하고 같은 문자 와 일치 합 니 다.
    표현 식
    일치 가능
    ^
    ^ 그 자체
    $
    $자체
    .
    자체
    '다양한 문자' 와 일치 하 는 표현 식 사용자 정의
    사용 중 괄호 [] 는 일련의 문 자 를 포함 하여 그 중의 임의의 문자 와 일치 할 수 있 습 니 다.[^] 로 일련의 문 자 를 포함 하면 그 중의 문자 이외 의 임의의 문자 와 일치 할 수 있 습 니 다.
    표현 식
    일치 가능
    [abc]
    a 또는 b 또는 c
    [^abc]
    a, b, c 이외 의 임의의 문자
    [^A-F0-3]
    A - F, 0 - 3 이외 의 임의의 문자
    • 일치 횟수 (중복)
    표현 식 을 사용 하고 일치 하 는 횟수 를 수식 하 는 특수 기 호 를 더 하면 표현 식 을 반복 하지 않 아 도 일치 하 는 것 을 반복 할 수 있 습 니 다.
    기호.
    속뜻
    *
    앞의 문자 와 일치 하 는 임의의 횟수 는 0 회 를 포함 합 니 다.
    .*
    임의의 길이 의 임의의 문자
    ?
    앞 글자 0 또는 1 회 일치
    +
    앞의 문자 와 최소 1 번 일치 합 니 다.
    {m,n}
    앞의 문자 와 최소 m 회, 최대 n 회 일치 합 니 다.
    {n}
    앞 글자 n 회 일치
    {,n}
    앞의 문자 와 최대 n 번 일치 합 니 다.
    {n,}
    앞의 문자 와 최소 n 번 일치 합 니 다.
     2:a*b            a  b      ,  b  (0 a  b    )
    
    
     3:         ip       
                [0-9]      {1-3}  “.”,    3 \{3\},               
    
    [root@V9centos7 ~]$ifconfig ens33|grep -w inet|grep -Eo  '([0-9]{1,3}\.){3}[0-9]{1,3}'
        172.16.253.231
        255.255.0.0
        172.16.255.255
    

    위치 닻: 위치 가 나타 난 위치
    기호.
    속뜻
    ^
    줄 의 첫 닻 은 패턴 의 맨 왼쪽 에 사용 된다.
    $
    행 미 닻 은 패턴 의 맨 오른쪽 에 사용 된다.
    ^pattern$
    패턴 일치 줄 사용
    ^$
    공 행
    1*$
    공백 줄
    \
    단어의 첫 닻 은 단어 모드 의 왼쪽 에 사용 된다.
    \ > 또는 \ b
    어미 닻
    \
    단어 전체 일치
      4:      Packages    .rpm     ,           ,       
       ls /misc/cd/Packages/|grep -o'[^.]\+\.rpm$'|sort|uniq -c
    PS:/misc        ,      ,       
    
      5:     f1  ,       tab 
    [root@V9centos7 /data]$cat -A f1
    abc cba$
    $
    help $
    ^I^I$
    USB^I$ 
    $
    [root@V9centos7 /data]$grep -v '^[[:space:]]*$'  f1
    abc cba
    help 
    USB	
    

    그룹:
    \ (\) 하나 이상 의 문 자 를 묶 어 하나의 전체 로 처리 합 니 다.
      :IP       ,   ,            
    '([0-9]{1,3}\.){3}[0-9]{1,3}'
    

    인용
    그룹 괄호 의 패턴 이 일치 하 는 내용 은 정규 표현 식 엔진 에 내부 변수 에 기 록 됩 니 다. 이 변 수 는 \ 1, \ 2, \ 3...
    \ \ 1 은 왼쪽 에서 부터 첫 번 째 왼쪽 괄호 와 일치 하 는 오른쪽 괄호 사이 의 패턴 에 일치 하 는 문 자 를 표시 합 니 다.
      :\1      \(r..\)     ,         roo,   \1    roo,   r..
          echo "aa roo xx ryy"|grep "\

    \ # \ # 5. 확장 정규 표현 식 확장 정규 표현 식 은 기본 문법 에서 사용 할 때 처럼 일부 문자 의 수 요 를 없 앴 습 니 다. (),?, +, | (곶 을 포함 합 니 다.
    단점 은 정규 표현 식 에서 문자 로 해석 하려 면 의 미 를 바 꿔 야 한 다 는 것 입 니 다. grep - E 또는 egrep 를 사용 하여 확장 정규 표현 식 을 지정 할 수 있 습 니 다.
    \ # \ # 6. 또는 표시 방법
    기호 사용 | 선택 할 모드 분리
      :    f1  xyzab xyzdf xyzef。
    [root@V9centos7 /data]$grep -o "xyz\ab\|cd\|ef" f1
    xyzab  cd  ef
    [root@V9centos7 /data]$grep "xyz\(ab\|cd\|ef\)" f1
    xyzab xyzcd xyzef
    [root@V9centos7 /data]$cat f1
    xyzab xyzcd xyzef
    

    탐욕 과 게 으 름
    정규 표현 식 이 중복 되 는 기 호 를 포함 할 때 가능 한 한 많은 일치 문 자 를 포함 합 니 다.
    예: a. * b, aababaaab 를 검색 하면 전체 문자열 과 일치 합 니 다.
    [:space:] ↩︎

    좋은 웹페이지 즐겨찾기