위지원의 데이터 일기 🐈
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
Home
  • 분류 전체보기 (563)
    • ✎ 2025년 (4)
    • 2024년 (16)
    • 2023년 (6)
    • 2022년 (35)
      • Developement (22)
      • Error (9)
    • 2021년 (68)
      • ERROR (9)
      • 알고리즘 (11)
      • 개발공부 (21)
      • Data (15)
      • 21.下 (12)
    • 2020년 (164)
      • 코테 (84)
      • Development (29)
      • 정처기 (41)
    • 2019년 (27)
    • 2018년 (89)
      • English Speaking (8)
      • Error (12)
      • C, Java, FileSystem (13)
      • DataBase (15)
      • Java (2)
      • 지식 (16)
      • Go (3)
      • spark (9)
      • 영어 (5)
      • 알고리즘 (6)
    • 2017년 (143)
      • Error (17)
      • machine learning (16)
      • Spark (20)
      • Database (19)
      • Python (17)
      • Spring (9)
      • etc. (10)
      • 백준 (5)
      • Google Platform (12)
      • web Development (7)
      • Docker (3)
      • Linux (8)
블로그 내 검색
포트폴리오

위지원의 데이터 일기 🐈

데이터를 사랑하고 궁금해하는 기록쟁이입니다! 😉 Super Data Girl이 되는 그날까지🏃‍♀️ 화이팅!

  • 🖥 깃블로그
  • 🌍 위키원
  • 📑 내맘대로 스크랩
  • 💌 메일
  • 2020년/Development

    python을 이용해서 정규 표현식을 공부해보자(feat.python의 re 라이브러리)

    2020. 5. 26. 11:12

    by. 위지원

    https://wikidocs.net/4308

     

    위키독스

    온라인 책을 제작 공유하는 플랫폼 서비스

    wikidocs.net

    정규 표현식은 메타 문자를 사용하여 특별한 의미를 갖습니다. 

    예를 들어 문자 클래스 []를 사용한 [0-9], [a-zA-Z], [^0-9], [^a-zA-Z]와 같은 정규 표현식은 

     

    • \d : 숫자와 매치
    • \D : 숫자가 아닌 것과 매치
    • \s : whitespace 문자와 매치
    • \S : whitespace가 아닌 것과 매치
    • \w : 문자 + 숫자와 매치
    • \W : 문자 + 숫자가 아닌 것과 매치

    not을 뜻하는 ^는 대문자와 같습니다.

     

    • a.b = a+모든 문자+b
    • a[.]b = a+Dot(.)문자 + b
    • ca*t = a가 몇번이고 반복됨 ( 0번 반복 가능 )
    • ca+t = a가 1번 이상 반복
    • ca{n}t = a가 반드시 n번 반복
    • cat{2,5}t = a가 2-5회 반복
    • ab?c = b가 있어도 되고 없어도 됨

    python에는 re라는 정규 표현식을 지원하는 라이브러리가 있습니다.  정규 표현식을 쉽게 사용할 수 있죠

     

    https://www.geeksforgeeks.org/python-splitting-text-and-number-in-string/

     

    Python | Splitting Text and Number in string - GeeksforGeeks

    A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

    www.geeksforgeeks.org

    아래와 같이 코딩해봅시다. 

     

    • match

    match를 쓰면 문자열의 처음이 매치되는지 확인합니다.

    import re
    
    p = re.compile('[a-z]')
    
    m = p.match("wee")
    print("wee에 대한 결과:", m)
    
    m = p.match("95wee")
    print("95wwee에 대한 결과:",m)

    • serach

    search는 문자열 전체를 검사합니다.

    m = p.match("95wee")
    m2 = p.search("95wee")
    print("95wwee에 대한 결과(match):",m)
    print("95wwee에 대한 결과(search):",m2)

     

    • findall 은 다음과 같이 작동합니다.
    • finditer는 findall과 같습니다. 하지만 결과를 이터레이터 객체로 돌려줍니다. 
    p = re.compile('[a-z]')
    p2 = re.compile('[a-z]+')
    
    res = p.findall("wee ji won is so hungry")
    res2 = p2.findall("wee ji won is so hungry")
    print("print(findall [a-Z] 결과:", res)
    print("print(findall [a-Z]+ 결과:", res2)

     

    • 기타 함수를 알아봅시다.
      • group : 결과 출력
      • start : 문자열이 시작하는 index
      • end :  문자열이 끝나는 index
      • span : 문자열의 시작과 끝

     

    m = p2.search("95 wee")
    print("group:", m.group())
    print("start:", m.start())
    print("end:", m.start())
    print("span:", m.span())

    • 아래와 같이 한번에 사용할 수도 있습니다.
    m = re.match('[a-z]+',"95 wee")

     

    • DOTALL 옵션은 \n를 포함해서 검색합니다. 
      • I : 대소문자 구별 없이
      • M : 여러 라인에 걸쳐 검색합니다.

    wee is so hungry becasue she couldn't eat anything  in the morning  wee always hungry

    p = re.compile('[a-z]')
    m = p.match('a\nb')
    print(m)
    
    p = re.compile('a.b', re.DOTALL)
    m = p.match('a\nb')
    print(m)

     

    p = re.compile("^weeji\s\w+")
    p2 = re.compile("^weeji\s\w+", re.MULTILINE)
    
    data = """weeji won
    weeji two
    weeji three"""
    
    print("multiline 옵션 끔:", p.findall(data))
    print("multiline 옵션 켬:", p2.findall(data))

     

     

    저작자표시 (새창열림)

    '2020년 > Development' 카테고리의 다른 글

    list value를 가진 dictionary 정렬  (0) 2020.06.03
    파이썬 전역변수 사용하는 방법  (0) 2020.05.29
    시간 복잡도  (0) 2020.04.28
    자료구조와 알고리즘 시각화 사이트  (0) 2020.04.28
    에라테스토네스의 체  (0) 2020.04.27

    잠깐만요~! 읽으신김에 이런 글들은 어떠세요? 👀

    • list value를 가진 dictionary 정렬 2020.06.03
    • 파이썬 전역변수 사용하는 방법 2020.05.29
    • 시간 복잡도 2020.04.28
    • 자료구조와 알고리즘 시각화 사이트 2020.04.28
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

열정! 열정! 열정! 🔥

Designed by Nana
블로그 이미지
위지원
데이터 엔지니어로 근무 중에 있으며 데이터와 관련된 일을 모두 좋아합니다!. 특히 ETL 부분에 관심이 가장 크며 데이터를 빛이나게 가공하는 일을 좋아한답니다 ✨

티스토리툴바

티스토리툴바