728x90
반응형
정규표현식이란?
정규표현식은 "문자열"에 특정한 규칙이 있는 경우,
해당 규칙을 식으로 정의하여 규칙에 맞는 문자열들을 추출할 때 사용하는 기능
규칙이 있는 문자들을 정의한 규칙에 의해 뽑아냄
정규표현식 사용이유
특정한 조건에 맞는 문자를 추출할 경우, 조건문 작성 시 길고 복잡하게 작성이 되지만,
정규표현식을 이용하면 간단하고 효율적으로 작성 가능!
정규표현식 확인 Site
https://regexr.com : 정규표현식을 만들때 표현식을 입력하면 텍스트에서 패턴이 일치하는 부분을 하이라이트 표시해줌.
문자 클래스 [ ]
[abc]
- [] 사이의 문자들과 매치
- "a"는 정규식과 일치하는 문자인 "a"가 있으므로 매치
- "before"는 정규식과 일치하는 문자인 "b"가 있으므로 매치
- "dude"는 정규식과 일치하는 문자인 a, b, c 중 어느 하나도 포함하고 있지 않아 매치 되지 않는다!
- 하이픈을 이용해 [시작문자 - 끝문자] 로 표현 가능
- EX) [a-c] = [abc]
- [0-5] = [012345]
점 = Dot(.)
a.b
- 줄바꿈(\n)을 제외한 모든 문자와 매치 (도트의 위치 기준! 위 예시 : "a + Dot(.)문자 + b")
- "aab"는 가운데 문자 "a"가 모든 문자를 의미하는 '.'과 일치하므로 정규식과 매치.
- "a0b"는 가운데 문자 "0"가 모든 문자를 의미하는 '.'과 일치하므로 정규식과 매치.
- "abc"는 "a"와 "b" 사이에 어떤 문자가 하나도 없기 때문에 매치되지 않는다!
반복(*)
ca*t
- "ct"는 "a"가 0번 반복되어 매치!
- "cat" 는 "a"가 0번 이상 반복되어 매치(1번 반복)
- "caaat" 는 "a"가 0번 이상 반복되어 매치(3번 반복)
반복 (+)
반복을 나타내는 또 다른 메타 문자로 +가 있다. +는 최소 1번 이상 반복될 때 사용한다. 즉 *가 반복 횟수 0부터라면 +는 반복 횟수 1부터인 것이다.
ca+t
< c + a(1번 이상 반복) + t >
- "ct"는 "a"가 0번 반복되어 매치 X
- "cat"은 "a"가 1번 이상 반복 되어 매치(1번 반복)
- "caaat"은 "a"가 1번 이상 반복 되어 매치(3번 반복)
반복( {m , n} , ? )
{ } 메타 문자를 사용하면 반복 횟수를 고정할 수 있다. {m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지 매치할 수 있다. 또한 m 또는 n을 생략할 수도 있다. 만약 {3,}처럼 사용하면 반복 횟수가 3 이상인 경우이고 {,3}처럼 사용하면 반복 횟수가 3 이하를 의미한다. 생략된 m은 0과 동일하며, 생략된 n은 무한대(2억 개 미만)의 의미를 갖는다.
※ {1,}은 +와 동일하고, {0,}은 *와 동일하다.
ca{2}t
- "cat" 는 "a"가 1번 반복되어 매치 X
- "caat" 는 "a"가 2번 반복되어 매치 O
ca{2,5}t
- "cat" 는 "a"가 1번 반복되어 매치 X
- "caat" 는 "a"가 2번 반복되어 매치 X
- "caaaat" 는 "a"가 5번 반복되어 매치 O
ab?c
- "abc"는 "b"가 1번 사용되어 매치 = O
- "ac"는 "b"가 0번 사용되어 매치 = O
- ? == {0,1} 과 같은 표현이다!
*, +, ? 메타 문자는 모두 {m, n} 형태로 고쳐 쓰는 것이 가능하지만 가급적 이해하기 쉽고 표현도 간결한 *, +, ? 메타 문자를 사용하는 것이 좋다.
728x90
반응형
'Python' 카테고리의 다른 글
파이썬(Python) in, not in (0) | 2022.01.30 |
---|---|
[Python 문법] 파이썬 입력 받기(sys.stdin.readline) (0) | 2022.01.28 |
파이썬(Python) : set() (0) | 2022.01.06 |
파이썬 : re.compile (0) | 2022.01.02 |
sorted 함수 (0) | 2021.12.09 |