Python RegEx: re.match(), re.search(), re.findall()(예제 포함)

Python의 정규 표현식이란 무엇입니까?

A 정규식(RE) 프로그래밍 언어에서 검색 패턴을 설명하는 데 사용되는 특수 텍스트 문자열입니다. 코드, 파일, 로그, 스프레드시트 또는 문서와 같은 텍스트에서 정보를 추출하는 데 매우 유용합니다.

Python 정규식을 사용하는 동안 가장 먼저 인식해야 할 것은 모든 것이 본질적으로 문자이며 문자열이라고도 하는 특정 문자 시퀀스와 일치하는 패턴을 작성한다는 것입니다. Ascii 또는 라틴 문자는 키보드에 있는 문자이며 유니코드는 외국 텍스트를 일치시키는 데 사용됩니다. 여기에는 숫자와 구두점, $#@!% 등의 모든 특수 문자가 포함됩니다.

예를 들어 Python 정규식은 프로그램에 문자열에서 특정 텍스트를 검색한 다음 그에 따라 결과를 인쇄하도록 지시할 수 있습니다. 표현에는 다음이 포함될 수 있습니다.

  • 텍스트 매칭
  • 되풀이
  • 가지
  • 패턴구성 등

Python의 정규 표현식 또는 RegEx는 RE(RE, 정규 표현식 또는 정규 표현식 패턴)로 표시되며 다음을 통해 가져옵니다. 다시 모듈. Python은 라이브러리를 통해 정규식을 지원합니다. Python의 RegEx는 다음과 같은 다양한 기능을 지원합니다. 수정자, 식별자 및 공백 문자.

식별자 수정 자 공백 문자 탈출 필요
\d= 임의의 숫자(숫자) \d는 숫자를 나타냅니다. 예: \d{1,5} 1,5 등과 같이 424,444,545 사이의 숫자를 선언합니다. \n = 새 줄 . + * ? [] $ ^ () {} | \
\D= 숫자가 아닌 것(숫자가 아닌 것) + = 1개 이상 일치 \s= 공백
\s = 공백
(탭, 공백, 개행 등)
? = 0 또는 1과 일치 \t =탭
\S= 공백이 아닌 것 * = 0 이상 \e = 탈출
\w = 문자("_"를 포함한 영숫자 문자 일치) $ 문자열의 끝과 일치 \r = 캐리지 리턴
\W =문자를 제외한 모든 문자("_"를 제외한 영숫자가 아닌 문자와 일치) ^ 문자열의 시작과 일치 \f= 폼피드
. = 문자(마침표)를 제외한 모든 것 | 또는 x/y와 일치 ------
\b = 개행을 제외한 모든 문자 [] = 범위 또는 "분산" ------
\. {x} = 이전 코드의 양 ------

정규식(RE) 구문

import re
  • 주로 문자열 se에 사용되는 Python에 포함된 "re" 모듈archiNG와 조작
  • 웹페이지에도 자주 사용됨 “긁기” (웹사이트에서 대량의 데이터 추출)

(w+) 및 (^) 표현식을 사용하는 간단한 연습으로 표현식 튜토리얼을 시작하겠습니다.

w+ 및 ^ 표현식의 예

  • “^”: 이 표현식은 문자열의 시작과 일치합니다.
  • “여+“: 이 표현식은 문자열의 영숫자 문자와 일치합니다.

여기서는 코드에서 w+ 및 ^ 표현식을 사용하는 방법에 대한 Python RegEx 예제를 볼 수 있습니다. Python의 re.findall() 함수를 다룹니다. later 이 튜토리얼에서는 잠시 \w+ 및 \^ 표현식에만 집중하겠습니다.

예를 들어, "guru99, education is fun"이라는 문자열의 경우 w+ 및 ^를 사용하여 코드를 실행하면 "guru99"가 출력됩니다.

w+ 및 ^ 표현식의 예

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)

w+에서 +부호를 제거하면 출력이 변경되고 첫 글자의 첫 번째 문자, 즉 [g]만 제공됩니다.

re.split 함수의 \s 표현식 예

  • "s": 이 표현식은 문자열에 공백을 만드는 데 사용됩니다.

Python에서 이 RegEx가 어떻게 작동하는지 이해하기 위해 분할 함수의 간단한 Python RegEx 예제부터 시작합니다. 예제에서는 "re.split" 함수를 사용하여 각 단어를 분할했으며 동시에 문자열의 각 단어를 개별적으로 구문 분석할 수 있는 표현식 \s를 사용했습니다.

re.split 함수의 \s 표현식

이 코드를 실행하면 ['we', 'are', 'splitting', 'the', 'words']가 출력됩니다.

이제 s에서 "\"를 제거하면 어떤 일이 발생하는지 살펴보겠습니다. 출력에 's' 알파벳이 없습니다. 이는 문자열에서 '\'를 제거하고 "s"를 일반 문자로 평가하여 문자열에서 "s"를 찾을 때마다 단어를 분할하기 때문입니다.

re.split 함수의 \s 표현식

마찬가지로 \d,\D,$,\.,\b 등과 같이 Python에서 다양한 방식으로 사용할 수 있는 일련의 다른 Python 정규 표현식이 있습니다.

다음은 완전한 코드입니다.

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print((re.split(r'\s','we are splitting the words')))
print((re.split(r's','split the words')))

다음으로 Python에서 정규 표현식과 함께 사용되는 메소드 유형을 살펴보겠습니다.

정규식 방법 사용

"re" 패키지는 입력 문자열에 대해 실제로 쿼리를 수행하는 여러 가지 방법을 제공합니다. Python의 re 메소드를 살펴보겠습니다.

  • 다시 일치()
  • 연구()
  • re.findall()

주의 사항: 정규식을 기반으로 Python은 두 가지 기본 작업을 제공합니다. match 메소드는 문자열의 시작 부분에서만 일치를 확인하는 반면 검색은 문자열의 어느 위치에서나 일치를 확인합니다.

다시 일치()

다시 일치() Python에서 re 함수는 정규식 패턴을 검색하고 첫 번째 항목을 반환합니다. Python RegEx Match 메서드는 문자열 시작 부분에서만 일치 항목을 확인합니다. 따라서 첫 번째 줄에서 일치 항목이 발견되면 일치 개체를 반환합니다. 그러나 다른 줄에서 일치하는 항목이 발견되면 Python RegEx Match 함수는 null을 반환합니다.

예를 들어 다음을 고려하십시오.wing Python re.match() 함수의 코드입니다. "w+" 및 "\W"라는 표현은 문자 'g'로 시작하는 단어와 일치하며 이후 'g'로 시작하지 않는 단어는 식별되지 않습니다. 목록이나 문자열의 각 요소에 대한 일치 여부를 확인하기 위해 이 Python re.match() 예제에서 forloop를 실행합니다.

다시 일치()

re.search(): 텍스트에서 패턴 찾기

연구() 함수는 정규식 패턴을 검색하고 첫 번째 항목을 반환합니다. Python re.match()와 달리 입력 문자열의 모든 줄을 확인합니다. Python re.search() 함수는 패턴이 발견되면 일치 객체를 반환하고, 패턴이 발견되지 않으면 "null"을 반환합니다.

검색()을 어떻게 사용하나요?

search() 함수를 사용하려면 먼저 Python re 모듈을 가져온 후 코드를 실행해야 합니다. Python re.search() 함수는 기본 문자열에서 스캔하기 위해 "패턴"과 "텍스트"를 사용합니다.

검색()을 사용하세요

예를 들어 여기서는 텍스트 문자열 "Software"에서 "Software Testing" "guru99"라는 두 개의 리터럴 문자열을 찾습니다. 지원 재미있다”. "소프트웨어 테스팅"의 경우 일치 항목을 찾았으므로 Python re.search() 예제의 출력을 "일치 항목 발견"으로 반환하고, "guru99"라는 단어의 경우 문자열에서 찾을 수 없으므로 출력을 "일치 없음"으로 반환합니다. ".

re.findall()

찾기() 모듈은 주어진 패턴과 일치하는 "모든" 발생을 검색하는 데 사용됩니다. 대조적으로, search() 모듈은 지정된 패턴과 일치하는 첫 번째 항목만 반환합니다. findall()은 파일의 모든 행을 반복하고 단일 단계에서 겹치지 않는 모든 패턴 일치를 반환합니다.

Python에서 re.findall()을 사용하는 방법은 무엇입니까?

여기에 전자 목록이 있습니다.mail 주소, 그리고 우리는 모든 전자-mail 목록에서 가져올 주소를 찾으려면 Python에서 re.findall() 메서드를 사용합니다. 그것은 모든 전자를 찾을 것입니다mail 목록에서 주소를 선택하세요.

Python에서 re.findall() 사용

re.findall() 예제의 전체 코드는 다음과 같습니다.

import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print((z.groups()))
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
    if re.search(pattern, text):
        print('found a match!')
else:
    print('no match')
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

파이썬 플래그

많은 Python Regex 메서드와 Regex 함수는 플래그라는 선택적 인수를 사용합니다. 이 플래그는 주어진 Python Regex 패턴의 의미를 수정할 수 있습니다. 이를 이해하기 위해 이러한 플래그의 한두 가지 예를 살펴보겠습니다.

Python에서 사용되는 다양한 플래그는 다음과 같습니다.

정규식 플래그 구문 이 깃발의 역할은 무엇입니까?
[리엠] 각 줄의 시작/끝을 고려하세요.
[재.I] 대소문자를 무시합니다.
[re.S] 만들다 [ . ]
[re.U] { \w,\W,\b,\B}가 유니코드 규칙을 따르도록 만드세요.
[re.L] {\w,\W,\b,\B}가 로케일을 따르도록 설정
[리엑스] Regex에서 주석 허용

re.M 또는 여러 줄 플래그의 예

여러 줄에서 패턴 문자 [^]는 문자열의 첫 번째 문자와 각 줄의 시작 부분과 일치합니다(following 각 줄 바꿈 직후). 표현 소문자 "w"는 공백을 문자로 표시하는 데 사용됩니다. 코드를 실행하면 첫 번째 변수 "k1"은 guru99라는 단어에 대해 문자 'g'만 인쇄하는 반면, 여러 줄 플래그를 추가하면 문자열에 있는 모든 요소의 첫 번째 문자를 가져옵니다.

re.M 또는 여러 줄 플래그의 예

다음은 코드입니다.

import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print(k1)
print(k2)
  • 문자열 "guru99..."에 대해 변수 xx를 선언했습니다. Careerguru99….셀레늄”
  • 여러 줄 플래그를 사용하지 않고 코드를 실행하면 해당 줄에서 'g'만 출력됩니다.
  • "multiline" 플래그를 사용하여 코드를 실행합니다. 'k2'를 인쇄하면 'g', 'c' 및 's'로 출력됩니다.
  • 따라서 위의 예에서 여러 줄을 추가한 후와 추가하기 전의 차이점을 확인할 수 있습니다.

처럼wise, re.U(유니코드), re.L(로케일 따르기), re.X(주석 허용) 등과 같은 다른 Python 플래그를 사용할 수도 있습니다.

파이썬 2 예

위 코드는 Python 3 예제입니다. Python 2에서 실행하려면 다음을 고려하세요.wing 암호.

# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1

# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))

# Using re.findall for text
import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print(z.groups())
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print 'Looking for "%s" in "%s" ->' % (pattern, text),
    if re.search(pattern, text):
        print 'found a match!'
else:
    print 'no match'
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print email

# Example of re.M or Multiline Flags
import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2

요약

정규 표현식 프로그래밍 언어 검색 패턴을 설명하는 데 사용되는 특수 텍스트 문자열입니다. 여기에는 숫자, 구두점, $#@!% 등의 모든 특수 문자가 포함됩니다. 표현식에는 리터럴이 포함될 수 있습니다.

  • 텍스트 매칭
  • 되풀이
  • 가지
  • 패턴구성 등

Python에서 정규식은 RE(RE, regexes 또는 regex 패턴)로 표시되며 Python re 모듈을 통해 내장됩니다.

  • 주로 문자열 se에 사용되는 Python에 포함된 "re" 모듈archiNG와 조작
  • 웹페이지 “스크래핑”(웹사이트에서 대량의 데이터 추출)에도 자주 사용됩니다.
  • 정규 표현식 방법에는 다음이 포함됩니다. re.match(),re.search()& re.findall()
  • 다른 Python RegEx 대체 메소드는 re에서 일치하는 문자열을 대체하는 데 사용되는 sub() 및 subn()입니다.
  • 파이썬 플래그 많은 Python Regex 메서드와 Regex 함수는 Flags라는 선택적 인수를 사용합니다.
  • 이 플래그는 주어진 Regex 패턴의 의미를 수정할 수 있습니다.
  • Regex 메서드에 사용되는 다양한 Python 플래그는 re.M, re.I, re.S 등입니다.