ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python Re - 정규식, RegularExpression
    Search: Python Python 2018. 1. 30. 23:23

    Python예제 - 정규식, 정규표현식, re, RegularExpression

     

    * Python 함수

     

     메소드  설명 
     compile(pattern[, flags])  입력된 pattern을 컴파일하여 정규식 객체를 리턴 
     match(pattern, string[, flags])  string의 앞부분에 pattern과 일치하는 검사 하여 MatchObject 리턴
     search(pattern, string[, flags])  string의 전체중 pattern과 일치하는 곳이 있는지 찾아  MatchObject 리턴
     split(pattern, string[, flags])   pattern을 구분자로 string을 분리하여 리스트로 리턴
     findall(pattern, string[, flags])  string에서 pattern을 만족하는 문자열을 리스트로 리턴 
     finditer(pattern, string[, flags])  string에서 pattern을 만족하는 문자열을 반복자로 리턴
     sub(pattern, repl, string[, count=0])   string에서 pattern과 일치하는 부분에 대하여  repl로  교체하여 결과 문자열을 리턴
     subn(pattern, repl, string[, count=0])  sub와 동일하나, 결과(결과 문자열, 매칭횟수)를 튜플로 리턴 
     escape(string)  영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴
    (임의의 문자열을 정규식 패턴으로 사용할 경우 유용) 

    Python Re - match, search 예제

    Python Re - group

     

     

    Python 예제

     

    >>> re.search('a', 'asddffff')
    <re.Match object; span=(0, 1), match='a'>
    >>> re.search('d', 'asddffff')
    <re.Match object; span=(2, 3), match='d'>
    >>> re.search('dd', 'asddffff')
    <re.Match object; span=(2, 4), match='dd'>
    >>> re.match('a', 'asddffff')
    <re.Match object; span=(0, 1), match='a'>
    >>> re.match('d', 'asddffff')
    >>>

     

    >>> s1 = "asdfghgfdsa"; print(s1 + " => " + re.sub("[^h]g","GGG", s1))
    asdfghgfdsa => asdGGGhgfdsa

     

     

    * 반복 메타 문자

     

    반복 메타문자 의미
    * 0 이상 반복 ab, abc, abbc에 대하여
    'ab*c'는 모두 매치.
    'b*'는 없음.
    'bbb*'는 abbc중 bb에 매치.
    + 1 이상 반복 ab+c는 abc, abbc등과 매치
    ? 0 혹은 1 ab?c는 ab, abc 매치.
    {m} m 반복 ab{2}는 abb 매치.
    {m,n} m회 이상 n회 이하 반복 ab{2,4}c는 abbc, abbbc, abbbbc 매치

     

     

    문자 클래스

     
    [\-]    "-"
    [0-9] 숫자
    [^0-9] 숫자가 아닌 문자
    [A-Fa-f0-9] 16진수
    [A-Za-z0-9] 영숫자 
    [A-Za-z0-9_] 영숫자 + "_"
    [^A-Za-z0-9_] 낱말이 아닌 문자
    [A-Za-z] 알파벳 문자
    [A-Z] 대문자
    [a-z] 소문자
    [ \t] 공백과 탭
    [\x00-\x1F\x7F] 제어 문자
    [\x21-\x7E] 보이는 문자
    [\x20-\x7E] 보이는 문자 및 공백 문자
    [ \t\r\n\v\f] 공백 문자
    [^ \t\r\n\v\f] 공백이 아닌 모든 문자
    (?<=\W)(?=\w)|(?<=\w)(?=\W) 낱말 경계
    [][!"#$%&'()*+,./:;<=>?@\^_`{|}~-] 구두점
     

     

    매칭 메타 문자

     

     매칭 메타 문자  의미
     . 줄바꿈 문자를 제외한 모든 문자와 매치
    (re.DOTALL모드 사용하면 줄바꿈 문자 매치) 
     ^  문자열의 시작과 매치.
    ^[0-9] => 숫자로 시작.
     re.MULTILINE 모드 사용 시 각 라인의 시작과 매치 
     [] 메타 기호 안에서는 반대의 문자열과 매치.
    [^0-9] => 숫자가 아닌 것으로 시작.
     $  문자열의 마지막과 매치
     [] 메타 기호 안에서는 순수한 $문자로 매치 
     [] 문자 집합을 나타낸다. 
    [abc]d => ad, cd 등 포함,
    [a-c]는 a~c까지의 범위를 의미. 

    [a-zA-Z0-9]는 영문자 숫자를 의미.
     |  a|b는 a 또는(or) b의 의미
     ()  정규식을 그룹으로 묶음

     

     

     

    이스케이프 기호

     

    \\ : 역슬래쉬 문자 자체를 의미한다.

    \d : 모든 숫자와 매치된다. [0-9]

    \D : 숫자가 아닌 문자와 매치된다. [^0-9]

    \s : 화이트 스페이스 문자와 매치된다. [\t\n\r\f\v]

    \S : 화이트 스페이스 문자가 아닌 것과 매치된다. [^\t\n\r\f\v]

    \w : 숫자 또는 문자와 매치된다. [a-zA-Z0-9_]

    \W : 숫자 또는 문자가 아닌 것과 매치된다. [^a-zA-Z0-9_]

    \b : 단어의 경계를 나타낸다단어는 영문자 혹은 숫자의 연속 문자열로 가정한다.

    \B : \b 반대로 단어의 경계가 아님을 나타낸다.

     

     

     

     

    유니코드 문자 값

    이스케이프 시퀀스

    의미

    범주

    \u0008 \b 백스페이스  
    \u0009 \t 공백
    \u000A \n 줄 바꿈(새 줄) 줄 종결자
    \u000B \v
    (이 표 아래에 있는 정보 참조)
    세로 탭 공백
    \u000C \f 폼 피드 공백
    \u000D \r 캐리지 리턴 줄 종결자
    \u0020   공백 공백
    \u0022 \" 큰따옴표(")  
    \u0027 \' 작은따옴표(')  
    \u005C \\ 백슬래시(\)  
    \u00A0   줄 바꿈하지 않는 공백 공백
    \u2028   줄 구분 기호 줄 종결자
    \u2029   단락 구분 기호 줄 종결자
    \uFEFF   바이트 순서 표시 공백

     

    댓글