728x90
반응형
· 각 객체의 메서드
전 장에 이어서 re모듈에 속해 있는 객체의 메서드에 대해 이야기 내용을 추가한다.
· Match의 메서드
메서드 | 목적 |
group() | 현재 매치된 문자열을 반환한다. |
start() | 매치된 문자열의 시작점을 반환한다. |
end() | 매치된 문자열의 끝지점을 반환한다. |
span() | 매치된 문자열의 시작과 끝을 튜플 형식으로 반환한다. |
<Match 예제>
data4 = "It's still June and the weather is too hot."
p = re.compile('[a-zA-Z]+')
a = re.match(p, data4)
print(a.group())
# match는 처음부터 매치가 되는 값을 반환하기 때문에 '과 공백에서 매칭이 멈췄다.
print(a.start())
print(a.end())
print(a.span())
<결과>
It 0 2 (0, 2) |
<search 예제>
앞에 숫자 3과 공백을 추가한 후 실행한 결과
data5 = "3 It's still June and the weather is too hot."
p = re.compile('[a-zA-Z]+')
a = re.search(p, data5)
print(a.group())
# match는 처음부터 매치가 되는 값을 반환하기 때문에 '과 공백에서 매칭이 멈췄다.
print(a.start())
print(a.end())
print(a.span())
It 2 4 (2, 4) |
· Compile의 부가기능(옵션)
명령어 | 축약어 | 설명 |
DOTALL | S | dot(.) 문자가 줄바꿈(\n)을 포함하여 모든 문자를 매치한다. |
IGNORECASE | I | 대/소문자에 관계 없이 매치 |
MULTILINE | M | 여러 줄과 매치(메타 문자 사용에 관계가 있다.) |
VERBOSE | X | verbose 장황하다는 뜻으로 복잡한 정규식을 보기 편하게 설명해줄 수 있고 주석을 달 수 있다. |
축약어는 명어를 대체해서 사용할 수 있는 명령어다.
<간단한 예시>
# DOTALL, S
p = re.compile('단어', re.DOTALL)
p = re.compile('단어', re.S)
# IGNORECASE, I
p = re.compile('[a-z]', re.I)
# MULTILINE, M
p = re.compile('^p\w+', re.M)
# VERBOSE, X
p = re.compile(r"""
[0-9a-zA-Z] # 숫자와 영문 대소문자
[_0-9a-zA-Z-]* _, -, 숫자, 영문 대소문자를 반복하는 모든 문자(* : 반복)
@[_0-9a-zA-Z-]+ # @이후 _, -문자를 포함한 숫자, 영문 대소문자중 하나 이상
(\. # . 문자를 포함할땐 \. 으로 사용한다.
[_0-9a-zA-Z-]+
)
{1,3}$ # 한 글자부터 세 글자까지, $ : ~ 으로 끝나야 한다.
""", re.VERBOSE)
tip : 만약 어느 한 객체에 파일의 위치나 혹은 인터넷 주소 등을 기입하고 싶을 때 \n, \w 등이 정규식으로써 인식이 되버리는 경우 \\n, \\w 등으로 백 슬래쉬를 두 번써서 이를 무효화 했지만 re모듈에는 유용한 기능이 있다.
바로 위에 예시와 같이 정규식을 써주기 전에 r"[정규 표현식 내용 기입]" 이렇게 앞에 r을 써주면 \기능을 무시할 수 있다.
\기능이 없는 문자열이었다면 기존의 정규식과 동일하게 작동될 것이다.
· 문자열 바꾸기
sub 메서드를 이용하면 문자열의 내용 바꿔줄 수 있다.
여기에 정규식을 함께 이용하면 특정 문자들을 전부 교체해줄 수 있다.
<예제>
data6 = 'I like a red car, a green smartphone, and a blue umbrella.'
p = re.compile('(red | green | blue)') # ()는 하나의 그룹을 만들어 준다.
print(p.sub(' rgb ', data6)) # | : or의 기능
I like a rgb car, a rgb smartphone, and a rgb umbrella. |
※ subn을 사용하면 변경된 횟수도 같이 출력된다.
· 그 외 여러 메서드
메서드 이름 | 설명 |
fullmatch(패턴, 문자열) | 문자열의 시작과 끝이 모두 패턴과 일치해야지만 반환 |
split(패턴, 문자열, 최대 나눌 숫자) | 문자열이 패턴에 부합하면 해당 부분부터 리스트로 구분지어주는 함수이다, 최대 수를 '3'이라고 지정하면 3회 분할하고 작동을 멈춘다. |
purge() | compile()을 통해서 만든 객체는 캐시가 약 100개가 넘어가면 자동으로 초기화 된다. 하지만 purge()를 사용해서 만들면 100개가 넘어가지 않아도 초기화 된다. |
escape(패턴) | 패턴으로 입력 받은 특수기능문자(\n, \d, \w 등)를 이스케이프(탈출 : 기능 해제)해서 반환한다. |
728x90
반응형
'파이썬(Python)' 카테고리의 다른 글
파이썬 - 사용자 정의 함수 (0) | 2021.06.15 |
---|---|
파이썬 - 내장 함수 (0) | 2021.06.14 |
정규 표현식(정규식) - 1 (0) | 2021.06.13 |
For 반복문 (0) | 2021.06.12 |
While문과 Random함수 (0) | 2021.06.10 |