일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MySQL설치 # DB # 초보자 #Oracle친구
- Java #객체 #클래스 #인스턴스
- Library
- SpringFramework
- Spring Context
- 파이썬 패키지
- 정보통신용어 #Agent #
- 추상화란? # 결론은 객체들의 공통적인 개념
- 향상된 for문
- Java
- 파이썬 예외처리
- 오라클 환경 변수
- window10
- 파이썬 모듈
- JAVA #JDK #1.8 #JAVA 환경변수 # CLASS_PATH #시스템 변수 # 사용자 변수
- Mybatis#조건
- 정보통신용어 #Proxy #Proxy Server
- Spring Core
- maVen
- 웅스주니어개발자 #MySQL # Window10 # CMD # 초보자 #환경변수
- 따라해보세요
- 오라클 #Oracle #DB #database #12C
- Today
- Total
IT흔적
[파이썬] 정규표현식의 기초[1] - 메타 문자 본문
정규 표현식의 기초, 메타 문자(meta characters)
메타 문자란 원래 그문자가 가진 뜻이 아닌 특별한 용도로 사용되는 문자를 말한다. ex)메타문자: . ^ $ * + ? { } [ ] \ | ( )
1.문자 클래스(character class) : [] ex) 정규 표현식 [파이썬]이면 '파, 이 , 썬 중 한개의 문자와 매치
정규식 |
문자열 |
매치여부 |
설명 |
[파이썬] |
파파 |
Y |
'파'가 있음 |
이이 |
Y |
'이'가 있음 |
|
선선 |
N |
'선'은 없음 |
[0-5] (-) 기호는 [012345] FROM ~ TO 를 나타낸다.
그리고 주의할점은 ^ 메타 문자가 사용될 경우 반대 의미를 갖고 있다 [^0-9] 숫자가 아니라 문자가 배치된다.
☆ [자주 사용하는 문자 클래스]
[0-9] 또는 [a-zA-Z] 등은 무척 자주 사용하는 정규 표현식이다. 이렇게 자주 사용하는 정규식들은 별도의 표기법으로 표현할 수 있다. 다음을 기억해 두자.
\d - 숫자와 매치, [0-9]와 동일한 표현식이다.
\D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.\s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
\S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.\w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
\W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.
대문자로 사용된 것은 소문자의 반대임을 추측할 수 있을 것이다.
2.Dot(.) : 메타 문자는 줄바꿈 문자인 \n를 제외한 모든 문자와 매치됨을 의미 !But! re.DOTALL이라는 옵션을 주면 \n 문자와도 배치 가능
ex) a.b # a와 b사이에 줄바꿈 문자를 제외한 어떤 문자가 들어가도 모두 매치 -> a + 모든 문자 + b
정규식 |
문자열 |
매치여부 |
설명 |
a.b |
aab |
Y |
첫번째 a 끝 b 사이에 문자가 왔기 때문에 가능 |
a0b |
Y |
첫번째 a 끝 b 사이에 문자가 왔기 때문에 가능 |
|
abc |
N |
첫번째 a가 왔으나 마지막에 b가 아니라 c가 와서 불가능 |
그리고 여기서 주의할점은 만약에 Dot(.) 문자 클래스[] 가 같이 사용이 되면 모든 문자열이 아니라 그냥 문자하고만 매치가 가능!!
ex) a[.]b -> aab 가능 , a0b 불가능
3.반복(*) : 무한대라고 생각하면 된다.
ex) ca*t # * 앞에 있는 a가 0번부터 무한까지 몇번나와도 상관없다 나오기만하면 매치가 된다.
정규식 |
문자열 |
매치여부 |
설명 |
ca*t |
ct |
Y |
'a'가 0번 반복되어 가능 |
caat |
Y |
'a'가 2번 사용되어 가능 |
|
caaaaaaaaaaaaaaaaaaaaaaaat |
Y |
'a'가 무수히 많이 사용되었으나 가능 |
3-(2)반복(+) : 반복을 나타내는 또 다른 메타 문자로 +가 있다. +는 *와 달리 최소 1번부터 시작해야 매치가 가능하다.
ex) ca+t # +앞에있는 a가 최소 1번부터 무한대 까지 나오면 매치 가능
정규식 |
문자열 |
매치여부 |
설명 |
ca+t |
ct |
N |
'a'가 0번이여서 불가능 |
caat |
Y |
'a'가 2개여서 가능 |
|
caaaaaaaaaaaaaaaaaat |
Y |
'a'가 무수히 많이 사용되었으나 가능 |
3-(3)반복({m,n},?) : 무한번이아니라 5번까지만 쓸 수 있게하고 싶을때 사용한다. (0-5, 1-4)
{ } - 반복횟수 고정, {m, n} m부터 n까지 매치 가능 또는 m 또는 n을 생략 할 수 있다.
ex)
1. {m} ca{2}t # a가 2번 반복되면 매치 -> 2번만 가능
정규식 |
문자열 |
매치여부 |
설명 |
ca{2}t |
cat |
N |
"a"가 1번 사용되어서 불가능 |
ca{2}t |
caat |
Y |
"a가 2번 사용되어서 가능 |
2. {m, n} cat{2,5}t # a가 2~5번 반복되면 매치 -> 2,3,4,5 가능
정규식 |
문자열 |
매치여부 |
설명 |
ca{2,5}t |
cat |
N |
"a"가 1번만 반복되어 매치 x |
ca{2,5}t |
caat |
Y |
"a"가 2번 사용되어 매치 o |
ca{2,5}t |
caaaaat |
Y |
"a가 5번 반복되어 매치 o |
3. ? ca?t # '?' 앞에 있는 a가 0~1번 사용되면 매치 -> 0번 또는 1번 사용되면 가능
정규식 |
문자열 |
매치여부 |
설명 |
ca?t |
ct |
Y |
"a"가 없어도 0번 이여서 가능 |
cat |
Y |
"a"가 1번 사용되어서 매치o |
'DO it! Python' 카테고리의 다른 글
[파이썬]정규표현식의 기초[2] - re모듈(match, 컴파일 옵션) (0) | 2019.01.22 |
---|