python
이전 페이지다음 페이지
정규 표현식 패턴에 포함된 특수 구문을 사용하여 다른 문자열이나 문자열 세트를 일치시키거나 찾는 데 도움이 되는 특수 문자 시퀀스입니다. 정규식은 UNIX 세계에서 널리 사용됩니다.
Python 모듈은 재 Python에서 Perl과 유사한 정규식을 완벽하게 지원합니다. re 모듈은 정규 표현식을 컴파일하거나 사용하는 동안 오류가 발생하면 예외 re.error를 발생시킵니다.
정규 표현식을 처리하는 데 사용되는 두 가지 중요한 함수를 다룰 것입니다. 그러나 먼저 작은 것이 있습니다. 정규 표현식에서 사용될 때 특별한 의미를 갖는 다양한 문자가 있습니다. 정규식을 처리하는 동안 혼동을 피하기 위해 원시 문자열을 r'expression'으로 사용합니다. .
이 함수는 RE 패턴 일치를 시도합니다. 문자열로 선택적 플래그 사용 .
다음은 이 함수의 구문입니다. -
re.match(pattern, string, flags=0)
다음은 매개변수에 대한 설명입니다. -
시니어 번호 | 매개변수 및 설명 |
---|---|
1 | 패턴 일치시킬 정규식입니다. |
2 | 문자열 이것은 문자열의 시작 부분에 있는 패턴과 일치하도록 검색되는 문자열입니다. |
3 | 플래그 비트 OR(|)를 사용하여 다른 플래그를 지정할 수 있습니다. 아래 표에 나열된 수정자입니다. |
재매칭 함수는 일치를 반환합니다. 성공에 대한 이의 제기, 없음 실패에. 그룹(숫자)을 사용합니다. 또는 그룹() 일치 기능 일치하는 표현식을 얻을 개체입니다.
시니어 번호 | 매치 개체 방법 및 설명 |
---|---|
1 | 그룹(숫자=0) 이 메서드는 전체 일치(또는 특정 하위 그룹 번호)를 반환합니다. |
2 | 그룹() 이 메서드는 튜플에서 일치하는 모든 하위 그룹을 반환합니다(없는 경우 비어 있음) |
#!/usr/bin/python import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2) else: print "No match!!"
위의 코드를 실행하면 다음과 같은 결과가 나온다 -
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter
이 함수는 RE pattern의 첫 번째 발생을 검색합니다. 문자열 내 선택적 플래그 사용 .
다음은 이 함수의 구문입니다. -
re.search(pattern, string, flags=0)
다음은 매개변수에 대한 설명입니다. -
시니어 번호 | 매개변수 및 설명 |
---|---|
1 | 패턴 일치시킬 정규식입니다. |
2 | 문자열 이것은 문자열의 어느 곳에서나 패턴과 일치하도록 검색되는 문자열입니다. |
3 | 플래그 비트 OR(|)를 사용하여 다른 플래그를 지정할 수 있습니다. 아래 표에 나열된 수정자입니다. |
re.search 함수는 일치를 반환합니다. 성공에 대한 이의 제기, 없음 실패에. 우리는 그룹(숫자) 을(를) 사용합니다. 또는 그룹() 일치 기능 일치하는 표현식을 얻을 개체입니다.
시니어 번호 | 매치 개체 방법 및 설명 |
---|---|
1 | 그룹(숫자=0) 이 메서드는 전체 일치(또는 특정 하위 그룹 번호)를 반환합니다. |
2 | 그룹() 이 메서드는 튜플에서 일치하는 모든 하위 그룹을 반환합니다(없는 경우 비어 있음) |
#!/usr/bin/python import re line = "Cats are smarter than dogs"; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print "searchObj.group() : ", searchObj.group() print "searchObj.group(1) : ", searchObj.group(1) print "searchObj.group(2) : ", searchObj.group(2) else: print "Nothing found!!"
위의 코드를 실행하면 다음과 같은 결과가 나온다 -
searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter
Python은 정규식을 기반으로 하는 두 가지 기본 연산을 제공합니다. match 검색 동안 문자열의 시작 부분에서만 일치하는지 확인합니다. 문자열의 어디에서나 일치하는지 확인합니다(Perl이 기본적으로 수행하는 작업입니다).
#!/usr/bin/python import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print "match --> matchObj.group() : ", matchObj.group() else: print "No match!!" searchObj = re.search( r'dogs', line, re.M|re.I) if searchObj: print "search --> searchObj.group() : ", searchObj.group() else: print "Nothing found!!"
위의 코드가 실행되면 다음 결과가 생성됩니다 -
No match!! search --> searchObj.group() : dogs
가장 중요한 재 중 하나 정규 표현식을 사용하는 메소드는 sub입니다. .
re.sub(pattern, repl, string, max=0)
이 방법은 RE 패턴의 모든 발생을 대체합니다. 문자열 repl과 함께 , max가 아닌 경우 모든 항목 대체 제공. 이 메서드는 수정된 문자열을 반환합니다.
#!/usr/bin/python import re phone = "2004-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r'#.*$', "", phone) print "Phone Num : ", num # Remove anything other than digits num = re.sub(r'\D', "", phone) print "Phone Num : ", num
위의 코드가 실행되면 다음 결과가 생성됩니다 -
Phone Num : 2004-959-559 Phone Num : 2004959559
정규식 리터럴에는 일치의 다양한 측면을 제어하기 위한 선택적 수정자가 포함될 수 있습니다. 수정자는 선택적 플래그로 지정됩니다. 이전에 표시된 대로 배타적 OR(|)를 사용하여 여러 수정자를 제공할 수 있으며 다음 중 하나로 표시될 수 있습니다. -
시니어 번호 | 수정자 및 설명 |
---|---|
1 | 나 대소문자를 구분하지 않는 일치를 수행합니다. |
2 | 리엘 현재 로케일에 따라 단어를 해석합니다. 이 해석은 알파벳 그룹(\w 및 \W)과 단어 경계 동작(\b 및 \B)에 영향을 미칩니다. |
3 | 리엠 $가 행의 끝(문자열의 끝이 아님)과 일치하도록 하고 ^가 임의의 행(문자열의 시작뿐만 아니라)의 시작과 일치하도록 합니다. |
4 | 다시 마침표(점)가 개행을 포함한 모든 문자와 일치하도록 합니다. |
5 | 리유 유니코드 문자 집합에 따라 문자를 해석합니다. 이 플래그는 \w, \W, \b, \B의 동작에 영향을 줍니다. |
6 | re.X "더 귀여운" 정규식 구문을 허용합니다. 공백을 무시하고(세트 [] 내부 또는 백슬래시로 이스케이프된 경우 제외) 이스케이프되지 않은 #을 주석 표시로 처리합니다. |
제어 문자 제외, (+ ? . * ^ $ ( ) [ ] { } | \) , 모든 문자가 자신과 일치합니다. 제어 문자 앞에 백슬래시를 붙여 이스케이프할 수 있습니다.
다음 표는 Python에서 사용할 수 있는 정규식 구문을 나열합니다. −
시니어 번호 | 패턴 및 설명 |
---|---|
1 | ^ 줄의 시작 부분과 일치합니다. |
2 | $ 줄 끝과 일치합니다. |
3 | . 개행을 제외한 모든 단일 문자와 일치합니다. m 옵션을 사용하면 줄 바꿈과도 일치합니다. |
4 | [...] 대괄호 안의 모든 단일 문자와 일치합니다. |
5 | [^...] 대괄호가 아닌 모든 단일 문자와 일치 |
6 | 재* 0개 이상의 선행 표현식과 일치합니다. |
7 | 재+ 1번 이상의 선행 표현식과 일치합니다. |
8 | 요? 선행 표현식의 0 또는 1번과 일치합니다. |
9 | 다시{n} 앞의 표현식과 정확히 n번 일치합니다. |
10 | 다시{n,} n개 이상의 선행 표현식과 일치합니다. |
11 | 다시{n,m} 선행 표현식의 최소 n번 및 최대 m번과 일치합니다. |
12 | 아| ㄴ 또는 b와 일치합니다. |
13 | (재) 정규 표현식을 그룹화하고 일치하는 텍스트를 기억합니다. |
14 | (?imx) 정규식 내에서 i, m 또는 x 옵션을 일시적으로 토글합니다. 괄호 안에 있는 경우 해당 영역만 영향을 받습니다. |
15 | (?-imx) 정규식 내에서 i, m 또는 x 옵션을 일시적으로 해제합니다. 괄호 안에 있는 경우 해당 영역만 영향을 받습니다. |
16 | (?:다시) 일치하는 텍스트를 기억하지 않고 정규식을 그룹화합니다. |
17 | (?imx:다시) 괄호 안의 i, m 또는 x 옵션을 일시적으로 토글합니다. |
18 | (?-imx:다시) 괄호 안의 i, m 또는 x 옵션을 일시적으로 끕니다. |
19 | (?#...) 댓글. |
20 | (?=다시) 패턴을 사용하여 위치를 지정합니다. 범위가 없습니다. |
21 | (?! 다시) 패턴 부정을 사용하여 위치를 지정합니다. 범위가 없습니다. |
22 | (?> 다시) 역추적 없이 독립적인 패턴과 일치합니다. |
23 | \w 단어 문자와 일치합니다. |
24 | \W 단어가 아닌 문자와 일치합니다. |
25 | \s 공백과 일치합니다. [\t\n\r\f]와 동일합니다. |
26 | \S 공백이 아닌 것과 일치합니다. |
27 | \d 숫자와 일치합니다. [0-9]와 동일합니다. |
28 | \D 숫자가 아닌 것과 일치합니다. |
29 | \A 문자열의 시작 부분과 일치합니다. |
30 | \Z 문자열의 끝과 일치합니다. 개행이 존재하면 개행 직전과 일치합니다. |
31 | \z 문자열의 끝과 일치합니다. |
32 | \G 마지막 매치가 끝난 매치 포인트. |
33 | \b 대괄호 밖에 있을 때 단어 경계와 일치합니다. 대괄호 안에 있을 때 백스페이스(0x08)와 일치합니다. |
34 | \B 단어가 아닌 경계와 일치합니다. |
35 | \n, \t 등 줄 바꿈, 캐리지 리턴, 탭 등과 일치합니다. |
36 | \1...\9 n번째 그룹화된 하위 표현식과 일치합니다. |
37 | \10 이미 일치하는 경우 n번째 그룹화된 하위 표현식과 일치합니다. 그렇지 않으면 문자 코드의 8진수 표현을 나타냅니다. |
시니어 번호 | 예 및 설명 |
---|---|
1 | 파이썬 "파이썬"과 일치합니다. |
시니어 번호 | 예 및 설명 |
---|---|
1 | [Pp]파이썬 "파이썬" 또는 "파이썬" 일치 |
2 | 문지르다[예] "ruby" 또는 "ruby" 일치 |
3 | [아에이오] 하나의 소문자 모음과 일치 |
4 | [0-9] 임의의 숫자와 일치합니다. [0123456789]와 동일 |
5 | [a-z] 모든 소문자 ASCII 문자와 일치 |
6 | [A-Z] 모든 대문자 ASCII 문자와 일치 |
7 | [a-zA-Z0-9] 위의 항목 중 하나와 일치 |
8 | [^aeiou] 소문자 모음 이외의 항목과 일치 |
9 | [^0-9] 숫자가 아닌 다른 것과 일치 |
시니어 번호 | 예 및 설명 |
---|---|
1 | . 개행 문자를 제외한 모든 문자 일치 |
2 | \d 숫자 일치:[0-9] |
3 | \D 숫자가 아닌 일치:[^0-9] |
4 | \s 공백 문자 일치:[ \t\r\n\f] |
5 | \S 공백이 아닌 일치:[^ \t\r\n\f] |
6 | \w 단일 단어 문자 일치:[A-Za-z0-9_] |
7 | \W 비단어 문자 일치:[^A-Za-z0-9_] |
시니어 번호 | 예 및 설명 |
---|---|
1 | 루비? "rub" 또는 "ruby" 일치:y는 선택 사항입니다. |
2 | 루비* "rub"과 0개 이상의 ys 일치 |
3 | 루비+ "rub"과 1개 이상의 ys 일치 |
4 | \d{3} 정확히 3자리 일치 |
5 | \d{3,} 3자리 이상 일치 |
6 | \d{3,5} 3, 4 또는 5자리 숫자 일치 |
이것은 가장 작은 반복 횟수와 일치합니다 -
시니어 번호 | 예 및 설명 |
---|---|
1 | <.*>
욕심 많은 반복:" |
2 | <.*?>
Nongreedy:" |
시니어 번호 | 예 및 설명 |
---|---|
1 | \D\d+ 그룹 없음:+ 반복 \d |
2 | (\D\d)+ 그룹화됨:+ \D\d 쌍 반복 |
3 | ([Pp]파이썬(, )?)+ "Python", "Python, python, python" 등을 찾습니다. |
이것은 이전에 일치했던 그룹과 다시 일치합니다 -
시니어 번호 | 예 및 설명 |
---|---|
1 | ([Pp])ython&\1ails python&pails 또는 Python&pails 일치 |
2 | (['"])[^\1]*\1 작은따옴표 또는 큰따옴표 문자열입니다. \1은 첫 번째 그룹이 일치하는 것과 일치합니다. \2는 두 번째 그룹이 일치하는 것과 일치합니다. |
시니어 번호 | 예 및 설명 |
---|---|
1 | 파이썬|펄 "python" 또는 "perl"과 일치 |
2 | 문지르다(y|le)) "루비" 또는 "루블" 일치 |
3 | 파이썬(!+|\?) "Python" 다음에 하나 이상의 ! 또는 하나? |
일치 위치를 지정해야 합니다.
시니어 번호 | 예 및 설명 |
---|---|
1 | ^파이썬 문자열 또는 내부 줄의 시작 부분에서 "Python" 일치 |
2 | 파이썬$ 문자열이나 줄의 끝에서 "Python"을 찾습니다. |
3 | \APython 문자열 시작 부분에서 "Python" 일치 |
4 | 파이썬\Z 문자열 끝에 "Python" 일치 |
5 | \b파이썬\b 단어 경계에서 "Python" 일치 |
6 | \brub\B \B는 비단어 경계입니다:"rub"과 "ruby"에서 "rub"과 일치하지만 단독은 아닙니다. |
7 | 파이썬(?=!) 느낌표가 뒤에 오는 경우 "Python"을 찾습니다. |
8 | 파이썬(?!!) 뒤에 느낌표가 없으면 "Python"과 일치시킵니다. |
시니어 번호 | 예 및 설명 |
---|---|
1 | R(?#댓글) "R"과 일치합니다. 나머지는 댓글입니다 |
2 | R(?i)uby "uby"와 일치하는 동안 대소문자를 구분하지 않음 |
3 | R(?i:uby) 위와 동일 |
4 | 문지름(?:y|le)) \1 역참조 를 생성하지 않고 그룹화만 |
python
파이썬에서 정규 표현식이란 무엇입니까? 정규 표현식(RE) 프로그래밍 언어에서 는 검색 패턴을 설명하는 데 사용되는 특수 텍스트 문자열입니다. 코드, 파일, 로그, 스프레드시트 또는 문서와 같은 텍스트에서 정보를 추출하는 데 매우 유용합니다. Python 정규식을 사용하는 동안 가장 먼저 인식해야 할 것은 모든 것이 본질적으로 문자이며 문자열이라고도 하는 특정 문자 시퀀스와 일치하는 패턴을 작성한다는 것입니다. ASCII 또는 라틴 문자는 키보드에 있는 문자이며 유니코드는 외래 텍스트와 일치하는 데 사용됩니다. 여기에는 숫자와
놓치신 경우:Python 2는 2020년 1월 1일부로 공식적으로 지원되지 않음 . 아직 Python 2.7을 사용 중이라면 지금 업그레이드하세요. . 실행 중인 버전이 확실하지 않은 경우 Python 버전을 확인하세요. 많은 패키지 유지 관리자가 Python 3으로 마이그레이션했습니다. 일부는 여전히 Python 2를 지원하고 다른 일부는 이미 Python 2 지원을 중단했습니다. Python 2 코드 기반에서 마이그레이션해야 하는 경우 Python 코드를 Python 3으로 마이그레이션하는 방법에 대한 가이드를 읽어보세요.