상세 컨텐츠

본문 제목

re : 파이썬 정규식 라이브러리

PYTHON, ML

by 이를루 2022. 3. 17. 17:36

본문

re  : 파이썬 정규식 라이브러리

 

일반 regular expression과 특별히 다른 규칙은 없다.


import re

dot (.) : any char.
^ $ : start, end of string
: invert... 예) [^A-Z]는 A-Z를 invert해주어서 소문자a-z를 의미하게됨.
: zero or more repeats // 0번 이상의 반복
+ : one or more repeats .. ( )로 싸인 글자들. (1번 이상의 반복)
\d \s \w : any digit, white space, word character
즉 \d 는 [0-9],      \s 는  [ \t\n\r\f\v](공백포함!!!),    \w 는 [a-zA-Z0-9_] (밑줄포함!!!!)
반대로 not digit 등은
\D \S \W : == [^0-9], [^ \t\n\r\f\v],   [^a-zA-Z0-9_]
? : 문자가 0개 or 1개
. : 문자가 1개
{n} : 숫자만큼

예) '[0-9]+' : 1개이상의 숫자
예) re.match('[0-9]{3}-[0-9]{4}-[0-9]{4}', '010-1000-1000')  : 숫자3, "-", 숫자4, "-", 숫자4

예) '\w' : 알파벳넘버 한글자 [a-zA-Z0-9]
예) '[\w]+' : 알파벳넘버로 된 단어   ( []로 문자 클래스를 만들고 +로 1번 이상의 반복)
예) 문장을 단어들로 분리하는 예

>>> lists = re.findall('[\w]+', words) <--- 문자들(\w)의 클래스([])의 1개이상의 반복(+)
또는
>>> lists = re.split('[\W]', words)  <-- 비문자(\W)의 클래스([])


함수들) re.search(), re.finall(), re.split(), re.match 등

re.match(패턴, 문자열) <-- 문자열의 처음부터 패턴의 존재여부를 검색함
re.search(패턴, 문자열) <-- 문자열의 일부분이 매칭되는지 판단함.
re.sub(패턴, 바꿀문자열, 문자열, 바꿀횟수) <-- 패턴에 따라 문자열을 바꿈.

예)   '{ "name": "james" }'을 '<name>james</name>' 형식으로 바꾸기 

>>> re.sub('({\s*)"(\w+)":\s*"(\w+)"(\s*})', '<\\2>\\3</\\2>', '{ "name": "james" }')
'<name>james</name>'

 

유용한 링크들

1. https://wikidocs.net/4308
2. https://dojang.io/mod/page/view.php?id=1144 


3. 이메일

https://dojang.io/mod/page/view.php?id=1145 

 

관련글 더보기