RE 정규 표현 식

11942 단어 정규 표현 식
정규 표현 식
  • 정의 즉 텍스트 의 고급 일치 모드 로 검색, 교체 등 기능 을 제공 합 니 다.그 본질은 일련의 문자 와 특수 기호 로 구 성 된 문자열 인 데 이 문자열 은 바로 정규 표현 식 이다.
  • 원 리 는 일반 문자 와 특정한 의 미 를 가 진 문 자 를 통 해 문자열 을 구성 하고 일정한 문자열 규칙, 예 를 들 어 중복, 위치 등 을 묘사 하여 특정한 문자열 을 표현 하여 일치 하도록 한다.

  • 메타 문자 사용
    일반 문자
    일치 규칙: 일반 문자 마다 해당 하 는 문자 가 일치 합 니 다.
    e.g.
    In : re.findall('ab',"abcdefabcd")
    Out: ['ab', 'ab']
    

    주의사항: 정규 표현 식 은 python 에서 도 중국어 와 일치 할 수 있 습 니 다.
    관계
    메타 문자: |
    일치 규칙: 일치 | 양쪽 임의의 정규 표현 식 을 사용 하면 됩 니 다.
    e.g.
    In : re.findall('com|cn',"www.baidu.com/www.tmooc.cn")
    Out: ['com', 'cn']
    
    

    일치 하 는 단일 문자
    메타 문자:. 일치 규칙: 줄 바 꿈 을 제외 한 임의의 문자 와 일치 합 니 다.
    e.g.
    In : re.findall(' . ',"   ,   ,   ")
    Out: ['   ', '   ', '   ']
    
    

    일치 문자 집합
    메타 문자: [문자 집합] 일치 규칙: 문자 집합 과 일치 하 는 임의의 문자 표현 형식:
    [abc \ #! 좋아] 는 [] 의 임의의 문자 [0 - 9], [a - z], [A - Z] 는 구간 내의 임의의 문자 [ \ #? 0 - 9a - z] 를 혼합 하여 쓰 고 일반 구간 표현 은 뒤에 쓴다.
    e.g.
    In : re.findall('[aeiou]',"How are you!")
    Out: ['o', 'a', 'e', 'o', 'u']
    

    일치 문자 집합 반전
    * 문자: [^ 문자 집합]
    일치 규칙: 문자 집합 을 제외 한 임의의 문자 와 일치 합 니 다.
    e.g.
    In : re.findall('[^0-9]',"Use 007 port")
    Out: ['U', 's', 'e', ' ', ' ', 'p', 'o', 'r', 't']
    

    일치 하 는 문자열 시작 위치
    메타 문자: ^ 일치 규칙: 대상 문자열 의 시작 위치 와 일치 합 니 다.
    e.g.
    In : re.findall('^Jame',"Jame,hello")
    Out: ['Jame']
    

    일치 하 는 문자열 의 끝 위치
    메타 문자: $일치 규칙: 대상 문자열 의 끝 위치 와 일치 합 니 다.
    e.g.
    In : re.findall('Jame$',"Hi,Jame")
    Out: ['Jame']
    

    규칙 기교: ^ 와 $는 정규 표현 식 의 시작 과 끝 에 반드시 나타 납 니 다.둘 이 동시에 나타 나 면 중간 부분 은 전체 대상 문자열 의 모든 내용 과 일치 해 야 합 니 다.
    일치 문자 반복
    메타 문자: * 일치 규칙: 앞의 문자 와 0 번 또는 여러 번 일치 합 니 다.
    e.g.
    In : re.findall('wo*',"wooooo~~w!")
    Out: ['wooooo', 'w']
    

    메타 문자: + 일치 규칙: 앞의 문자 와 일치 하여 1 번 또는 여러 번 나타 납 니 다.
    e.g.
    In : re.findall('[A-Z][a-z]+',"Hello World")
    Out: ['Hello', 'World']
    

    문자:?일치 규칙: 앞의 문자 와 0 번 또는 1 번 일치 합 니 다.
    e.g.     
    In [28]: re.findall('-?[0-9]+',"Jame,age:18, -26")
    Out[28]: ['18', '-26']
    

    문자: {n}
    일치 규칙: 앞의 문자 와 일치 하여 n 회 나타 납 니 다.
    e.g.       
    In : re.findall('1[0-9]{10}',"Jame:13886495728")
    Out: ['13886495728']
    
    

    메타 문자: {m, n} 일치 규칙: 앞의 문자 와 일치 하여 m - n 번 나타 납 니 다.
    e.g.   qq 
    In : re.findall('[1-9][0-9]{5,10}',"Baron:1259296994") 
    Out: ['1259296994']
    

    임의의 (비) 숫자 문자 일치
    메타 문자: \ d \ D 일치 규칙: \ d 는 임의의 숫자 문자 와 일치 하고 \ D 는 임의의 비 숫자 문자 와 일치 합 니 다.
    e.g.     
    In : re.findall('\d{1,5}',"Mysql: 3306, http:80")
    Out: ['3306', '80']
    

    일반 문자
    메타 문자: \ w \ W 일치 규칙: \ w 는 일반 문자 와 일치 합 니 다. \ W 는 일반 문자 가 아 닌 설명 과 일치 합 니 다. 일반 문 자 는 숫자, 자모, 밑줄, 한 자 를 말 합 니 다.
    e.g.
    In : re.findall('\w+',"server_port = 8888")
    Out: ['server_port', '8888']
    

    임의의 빈 문자 일치
    메타 문자: \ s \ S 매 칭 규칙: \ s 매 칭 빈 문자, \ S 매 칭 비 빈 문자 설명: 빈 문 자 는 빈 칸 을 가리킨다 \ r \ t \ v \ f 문자
    e.g.
    In : re.findall('\w+\s+\w+',"hello    world")
    Out: ['hello    world']
    

    일치 하 는 단어의 경계 위치
    메타 문자: \ b \ B 일치 규칙: \ b 는 단어 경 계 를 표시 하고 \ B 는 단어 경계 가 아 닌 설명 을 표시 합 니 다. 단어 경 계 는 숫자 자모 (한자) 밑줄 과 다른 문자 의 경계 위 치 를 말 합 니 다.
    e.g.
    In : re.findall(r'\bis\b',"This is a test.")
    Out: ['is']
    

    유별
    문자
    일치 문자
    . […] [^…] \d \D \w \W \s \S
    일치 반복
    * + ? {n} {m,n}
    일치 위치
    ^ $ \A \Z \b \B
    기타| () \
    정규 표현 식 의 전의
  • 정규 표현 식 이 특수 문자 와 일치 하려 면 \ \ 전 의 를 추가 해 야 합 니 다.

  • 특수 문자:. * +? ^ $[] () {} | \
    e.g.        .     \.       
    In : re.findall('-?\d+\.?\d*',"123,-123,1.23,-1.23")
    Out: ['123', '-123', '1.23', '-1.23']
    
  • 프로 그래 밍 언어 에서 네 이 티 브 문자열 로 정규 표현 식 을 작성 하여 다 중 전의 번 거 로 움 을 피한다.
  • e.g.
    python     -->          -->         
    "\\$\\d+"         \$\d+        "$100"
    
    "\\$\\d+"       r"\$\d+"
    

    탐욕 모드 와 비 탐욕 모드
  • 정의
  • 탐욕 모드: 기본적으로 중복 되 는 메타 문 자 는 가능 한 한 뒤로 일치 합 니 다.예 를 들 면 * +?{m,n}
    비 탐욕 모드 (게 으 름 모드): 중복 되 는 메타 문자 와 일치 하 는 내용 을 최대한 적 게 뒤로 일치 하도록 합 니 다.
  • 탐욕 모드 가 비 탐욕 모드 로 전환
  • 중복 문자 와 일치 한 후에 '?' 를 추가 합 니 다.번호
    *  :  *?
    +  :  +?
    ?  :  ??
    {m,n} : {m,n}?
    
    e.g.
    In : re.findall(r'\(.+?\)',"(abcd)efgh(higk)")
    Out: ['(abcd)', '(higk)']
    

    정규 표현 식 그룹
  • 정규 표현 식 에 정 의 됩 니 다. () 정규 표현 식 의 내부 그룹 을 만 들 고 하위 그룹 은 정규 표현 식 의 일부분 으로 내부 전체 작업 대상 으로 할 수 있 습 니 다.
  • 역할 은 전체 조작 으로 원 문자 의 조작 대상 을 바 꿀 수 있다
  • .
    e.g.     +       
    In : re.search(r'(ab)+',"ababababab").group()
    Out: 'ababababab'
    
    e.g.    |      
    In : re.search(r'( | )\w{1,3}',"    ").group()
    Out: '    '
    

    프로 그래 밍 언어 일부 인 터 페 이 스 를 통 해 일치 하 는 내용 중 하위 그룹 에 대응 하 는 내용 부분 을 가 져 올 수 있 습 니 다.
    e.g.   url    
    re.search(r'(https|http|ftp|file)://\S+',"https://www.baidu.com").group(1)
    
    
  • 포획 조
  • 정규 표현 식 의 하위 그룹 에 이름 을 지어 하위 그룹의 의 미 를 표현 할 수 있 습 니 다.이름 이 있 는 하위 그룹 은 캡 처 그룹 입 니 다.
    형식: (?Ppattern)
    e.g.        "pig"
    In : re.search(r'(?Pab)+',"ababababab").group('pig')
    Out: 'ab'
    
    
  • 주의사항
  • 하나의 정규 표현 식 에 여러 개의 하위 그룹 을 포함 할 수 있 습 니 다
  • 하위 그룹 은 끼 워 넣 을 수 있 지만 겹 치 거나 끼 워 넣 지 마 세 요
  • 서브 그룹 서열 번 호 는 보통 밖에서 안 으로, 왼쪽 에서 오른쪽으로 계산한다
  • [외부 체인 이미지 저장 에 실 패 했 습 니 다. 원본 사이트 에 도 난 방지 체인 메커니즘 이 있 을 수 있 습 니 다. 그림 을 저장 하여 직접 업로드 하 는 것 을 권장 합 니 다 (img - uo0FC1CV - 1584865659375) (img / re. png)]
    정규 표현 식 일치 원칙
  • 정확성, 목표 문자열 과 정확하게 일치 합 니 다.
  • 배타 적 이 며, 대상 문자열 을 제외 하고 가능 한 한 다른 내용 과 일치 하지 않 습 니 다.
  • 전면적 이 고 가능 한 한 목표 문자열 의 모든 상황 을 고려 하여 빠 뜨리 지 않 습 니 다.
  • Python re 모듈 사용
     regex = compile(pattern,flags = 0)
       :          
       : pattern       
          flags       ,          
        :        
    
     re.findall(pattern,string,flags = 0)
       :                 
       : pattern       
          string      
          flags       ,          
        :         ,                       
    
     regex.findall(string,pos,endpos)
       :                 
       : string      
          pos               
          endpos               
        :         ,                       
    
    re.split(pattern,string,max,flags = 0)
      :            ,       
      : pattern       
         string      
         max        
         flags       ,          
       :         
    
     re.sub(pattern,replace,string,count,flags = 0)
       :                     
       : pattern       
          replace        
          string      
          count        ,      
          flags       ,          
        :        
    
     re.finditer(pattern,string,flags = 0)
       :                 
       : pattern       
          string      
          flags       ,          
        :         
    
    re.match(pattern,string,flags=0)
      :             
      :pattern   
    	string       
       :    match object
    
    re.search(pattern,string,flags=0)
      :              
      :pattern   
    	string       
       :    match object
    

    match 대상 의 속성 방법
  • span () 일치 하 는 내용 의 시작 과 끝 위치 가 져 오기
  • groupdct () 캡 처 그룹 사전 가 져 오기, 그룹 이름 은 키 이 고 대응 하 는 내용 은 값
  • 입 니 다.
  • group (n = 0) 기능: match 대상 의 일치 하 는 내용 매개 변 수 를 가 져 옵 니 다. 기본 값 은 0 으로 전체 match 대상 의 내용 을 가 져 옵 니 다. 시리 얼 번호 나 그룹 이름 이 라면 해당 하 는 하위 그룹 내용 의 반환 값 을 가 져 옵 니 다. 일치 하 는 문자열
  • flags 매개 변수 확장
  • 사용 함수: re 모듈 호출 일치 함수.예 를 들 어 re. copile, re. findall, re. search...
  • 역할: 정규 표현 식 의 일치 기능 확장
  • 상용 flag
  • A = = ASCII 메타 문 자 는 ascii 코드 I = = IGNORECASE 와 일치 합 니 다. 알파벳 대소 문자 무시 S = = DOTALL 사. 줄 바 꾸 기 M = = MULTILINE 와 일치 할 수 있 습 니 다 ^ $각 줄 의 시작 과 끝 위치 에 일치 할 수 있 습 니 다.
  • 여러 개의 flag 방법 사용: 위치 나 e. g.: flags = re. I | re. A
  • 를 사용 합 니 다.

    좋은 웹페이지 즐겨찾기