본문 바로가기
개인공부/Python(Anaconda, NLTK)

Python (re)

by 저세상판단 2019. 10. 14.
반응형

re - 라이브러리의 한 종류로 주로 정규 표현식을 구현할 때 사용, 메소드로는 sub, compule, findall등이 있다.

정규 표현식 기호 및 설명

1. * : 바로 앞에 있는 문자, 하위 표현식이 0번 이상 반복됨을 나타냄

2. + : 바로 앞에 있는 문자, 하위 표현식이 1번 이상 반복됨을 나타냄

3. [] : 대괄호 안에 있는 문자 중 하나가 나타남

4. () : 괄호 안의 정규식을 하위 표현식 그룹으로 만듦, 정규 표현식을 평가할 때는 하위 표현식이 가장 먼저 평가됨

5. . : 어떠한 형태든 문자 1자를 나타냄

6. ^ : 바로 뒤에 있는 문자, 하위 표현식이 문자열 맨 앞에 나타남

7. $ : 바로 앞에 있는 문자, 하위 표현식이 문자열 맨 뒤에 나타남

8. {m} : 바로 앞에 있는 문자, 하위 표현식이 m회 반복됨

9. {m, n} : 바로 앞에 있는 문자, 하위 표현식이 m번 이상, n번 이하 나타남

10. | : |로 분리된 문자, 문자열, 하위 표현식 중 하나가 나타남

11. [^] : 대괄호 안에 있는 문자를 제외한 문자가 나타남

 

예) @*, +

      import re    // 라이브러리 사용을 위한 import

      r = re.compile("a+b*")    //a문자가 1번 이상 반복됨, b문자가 0번 이상 반복됨

      r.findall("aaaa, cc, bbbb, aabbb")    //이 네 가지 중 위의 조건에 부합하는 문자열을 찾음

      결과 -> ['aaaa', 'aabbb']    // 결과값

    @[]

      r = re.compile("[A-Z]+")    //영문자 대문자 중 한 문자가 1번 이상 반복됨

      r.findall("HOME, home")    //이 두 가지 중 위의 조건에 부합하는 문자열을 찾음

      결과 -> ['HOME']    //결과값

    @^, .

      r = re.compile("^a..")    //a가 맨 앞에 오고 그 다음에 어떠한 형태든 2개의 문자가 오는 문자열을 찾음

      r.findall("abc, cba")    //이 두 가지 중 위의 조건에 부합하는 문자열을 찾음

      결과 -> ['abc']    //결과값

    @{m, n}

      r = re.compile("a{2, 3}b{2, 3}")    //a가 2번 이상 3번 이하 반복되고, b가 2번 이상 3번 이하 반복되는 문자열을 찾음

      r.findall("aabb, aaabb, ab, aab")    //이 네 가지 중 위의 조건에 부합하는 문자열을 찾음

      ['aabb', 'aaabb']    //결과값

    @complie 메서드에 정규 표현식 패턴을 지정, search 메서드에 문자열을 넣고 패턴을 찾음

      p = re.compile(".+:")

     m = p.search("http://google.com")

      m.group()

      결과 -> 'http:'

    @sub 메서드를 이용하여 정규 표현식과 일치하는 부분을 다른 문자로 대체 가능

      p = re.compile("(내|나의|내꺼)")

      p.sub("그의", "나의 물건에 손대지 마시오.")

      결과 -> '그의 물건에 손대지 마시오.'

    @\W 로 특수 문자 제거 가능

      p = re.compile("\W+")

      p.sub("", "★서울 부동산")

      결과 -> '서울 부동산'

반응형

'개인공부 > Python(Anaconda, NLTK)' 카테고리의 다른 글

Python (wordCloud) 실습  (0) 2019.10.14
Python(PorterStemmer, LancasterStemmer, RegexpStemmer)  (0) 2019.10.14
Python(numpy)  (0) 2019.10.11
Python (Pandas.DataFrame)  (0) 2019.10.11
Python (Pandas.Series)  (0) 2019.10.11