logo

예제가 포함된 Python의 정규식(RegEx)

정규식 또는 RegEx 검색 패턴을 사용하여 문자열 또는 문자열 집합을 찾는 특수 문자 시퀀스입니다.

특정 패턴과 일치시켜 텍스트의 유무를 감지할 수 있으며 패턴을 하나 이상의 하위 패턴으로 분할할 수도 있습니다.

Python의 정규식 모듈

Python에는 다음과 같은 내장 모듈이 있습니다. 답장 Python의 정규 표현식에 사용됩니다. import 문을 사용하여 이 모듈을 가져올 수 있습니다.



예: Python에서 re 모듈 가져오기

파이썬3




# importing re module> import> re>

>

>

Python에서 RegEx를 사용하는 방법?

re 모듈을 가져온 후 Python에서 RegEx를 사용할 수 있습니다.

예:

이 Python 코드는 정규식을 사용하여 단어를 검색합니다. 주어진 문자열에서 문자열 내에서 일치하는 단어의 시작 및 끝 인덱스를 인쇄합니다.

파이썬3




import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())>

>

>

산출

Start Index: 34 End Index: 40>

메모: 여기서 r 문자(r'portal')는 정규식이 아닌 원시를 나타냅니다. 원시 문자열은 일반 문자열과 약간 다르며 문자를 이스케이프 문자로 해석하지 않습니다. 이는 정규식 엔진이 자체 이스케이프 목적으로 문자를 사용하기 때문입니다.

Python 정규식 모듈을 시작하기 전에 메타 문자나 특수 시퀀스를 사용하여 정규식을 실제로 작성하는 방법을 살펴보겠습니다.

메타문자

메타문자는 특별한 의미를 지닌 문자입니다.

RE 비유를 이해하려면 메타문자가 유용하고 중요합니다. 이들은 re 모듈의 기능에 사용됩니다. 아래는 메타문자 목록입니다.

메타문자

설명

뒤에 오는 문자의 특별한 의미를 삭제하는 데 사용됩니다.

오토마타 이론

[]

문자 클래스 표현

^

시작과 일치합니다

$

끝과 일치

.

개행 문자를 제외한 모든 문자와 일치합니다.

|

OR(이로 구분된 모든 문자와 일치함)을 의미합니다.

?

0개 또는 1개의 항목과 일치합니다.

*

발생 횟수 제한 없음(0회 발생 포함)

+

하나 이상의 발생

{}

일치시킬 이전 정규식의 발생 횟수를 나타냅니다.

()

Regex 그룹을 묶습니다.

각 메타문자에 대해 자세히 살펴보겠습니다.

1. – 백슬래시

백슬래시()는 문자가 특별한 방식으로 처리되지 않도록 합니다. 이는 메타문자를 이스케이프 처리하는 방법으로 간주될 수 있습니다.

예를 들어 문자열에서 도트(.)를 검색하려는 경우 도트(.)가 메타 문자 중 하나와 마찬가지로 특수 문자로 처리된다는 것을 알 수 있습니다(위 표 참조). 따라서 이 경우에는 점(.) 바로 앞에 백슬래시()를 사용하여 특수성을 잃게 됩니다. 더 나은 이해를 위해 아래 예를 참조하십시오.

예:

첫 번째 검색 ( re.search(r'.', s)> ) 마침표뿐만 아니라 모든 문자와 일치하지만 두 번째 검색은 ( re.search(r'.', s)> ) 구체적으로 마침표 문자를 찾아 일치시킵니다.

파이썬3




import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)>

>

>

산출

>

2. [] – 대괄호

대괄호([])는 일치시키려는 문자 집합으로 구성된 문자 클래스를 나타냅니다. 예를 들어, 문자 클래스 [abc]는 단일 a, b 또는 c와 일치합니다.

대괄호 안에 -를 사용하여 문자 범위를 지정할 수도 있습니다. 예를 들어,

  • [0, 3]은 다음과 같은 샘플입니다.
  • [a-c]는 [abc]와 동일합니다.

캐럿(^) 기호를 사용하여 문자 클래스를 반전시킬 수도 있습니다. 예를 들어,

  • [^0-3]은 0, 1, 2, 3을 제외한 모든 숫자를 의미합니다.
  • [^a-c]는 a, b 또는 c를 제외한 모든 문자를 의미합니다.

예:

이 코드에서는 정규식을 사용하여 문자열에서 'a'부터 'm'까지의 범위에 속하는 모든 문자를 찾습니다. 그만큼 re.findall()> 함수는 그러한 모든 문자의 목록을 반환합니다. 주어진 문자열에서 이 패턴과 일치하는 문자는 'c', 'k', 'b', 'f', 'j', 'e', ​​'h', 'l', 'd', '입니다. g'.

파이썬3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)>

>

>

산출

['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>

3. ^ – 캐럿

캐럿(^) 기호는 문자열의 시작 부분과 일치합니다. 즉, 문자열이 지정된 문자로 시작하는지 여부를 확인합니다. 예를 들어 -

  • ^g는 geeks, Globe, girl, g 등과 같이 문자열이 g로 시작하는지 확인합니다.
  • ^ge는 geeks, geeksforgeeks 등과 같이 문자열이 ge로 시작하는지 확인합니다.

예:

이 코드는 정규식을 사용하여 문자열 목록이 다음으로 시작하는지 확인합니다. 그만큼 . 문자열이 다음으로 시작하는 경우 일치됨으로 표시되어 있습니다. 그렇지 않으면 다음과 같이 표시됩니다. 일치하지 않습니다.

우선순위 큐 C++

파이썬3




import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)>

>

>

산출

Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>

4. $ – 달러

달러($) 기호는 문자열의 끝과 일치합니다. 즉, 문자열이 주어진 문자로 끝나는지 여부를 확인합니다. 예를 들어-

  • s$는 geeks, end, s 등과 같이 a로 끝나는 문자열을 확인합니다.
  • ks$는 geeks, geeksforgeeks, ks 등과 같이 ks로 끝나는 문자열을 확인합니다.

예:

이 코드는 정규식을 사용하여 문자열이 다음으로 끝나는지 확인합니다. 세계!. 일치하는 항목이 발견되면 인쇄됩니다. 일치하는 항목을 찾았습니다! 그렇지 않으면 인쇄됩니다. 일치하는 항목을 찾을 수 없습니다. .

파이썬3




import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

산출

Match found!>

5. . – 도트

점(.) 기호는 개행 문자( )를 제외한 단일 문자에만 일치합니다. 예를 들어 -

  • a.b는 점 위치에 acb, acbd, abbb 등과 같은 문자가 포함된 문자열을 확인합니다.
  • .. 문자열에 2자 이상이 포함되어 있는지 확인합니다.

예:

이 코드는 정규식을 사용하여 패턴을 검색합니다. 브라운.폭스 문자열 내에서. 점 (.>) 패턴의 모든 문자를 나타냅니다. 일치하는 항목이 발견되면 인쇄됩니다. 일치하는 항목을 찾았습니다! 그렇지 않으면 인쇄됩니다. 일치하는 항목을 찾을 수 없습니다. .

파이썬3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

산출

Match found!>

6. | - 또는

Or 기호는 or 기호 앞이나 뒤의 패턴이 문자열에 있는지 여부를 확인하는 or 연산자로 작동합니다. 예를 들어 -

  • a|b는 acd, bcd, abcd 등과 같이 a 또는 b를 포함하는 모든 문자열과 일치합니다.

7. ? - 물음표

물음표(?)는 이전 요소가 0번 또는 1번 일치해야 함을 나타내는 정규식의 수량자입니다. 요소가 선택 사항임을 지정할 수 있습니다. 즉, 해당 요소가 한 번만 발생하거나 전혀 발생하지 않을 수 있습니다. 예를 들어,

  • ab?c는 문자열 ac, acb, dabc에 대해서는 일치하지만 두 개의 b가 있기 때문에 abbc에 대해서는 일치하지 않습니다. 마찬가지로 b 뒤에 c가 없기 때문에 abdc에 대해서는 일치하지 않습니다.

8.* – 스타

별표(*) 기호는 * 기호 앞의 정규 표현식이 0개 이상 일치합니다. 예를 들어 -

  • ab*c는 ac, abc, abbbc, dabc 등의 문자열에 대해서는 일치하지만 b 뒤에 c가 없기 때문에 abdc에 대해서는 일치하지 않습니다.

9. + – 플러스

더하기(+) 기호는 + 기호 앞의 정규식과 일치합니다. 예를 들어 -

  • ab+c는 문자열 abc, abbc, dabc에 대해 일치하지만 ac, abdc에 대해서는 일치하지 않습니다. 왜냐하면 ac에는 b가 없고 abdc에는 b 뒤에 c가 없기 때문입니다.

10. {m, n} – 중괄호

중괄호는 m에서 n까지의 정규식 이전의 모든 반복과 일치합니다. 예를 들어 -

  • a{2, 4}는 aaab, baaaac, gaad 문자열에 대해서는 일치하지만 abc, bc와 같은 문자열에 대해서는 일치하지 않습니다. 두 경우 모두 a가 하나만 있거나 a가 없기 때문입니다.

11. () – 그룹

그룹 기호는 하위 패턴을 그룹화하는 데 사용됩니다. 예를 들어 -

  • (a|b)cd는 acd, abcd, gacd 등과 같은 문자열과 일치합니다.

특수 시퀀스

특수 시퀀스는 문자열의 실제 문자와 일치하지 않는 대신 일치가 발생해야 하는 검색 문자열의 특정 위치를 알려줍니다. 자주 사용되는 패턴을 작성하기가 더 쉬워집니다.

특수 시퀀스 목록

특수 시퀀스

설명

문자열이 주어진 문자로 시작하면 일치합니다.

아포르

괴짜를 위한

세상을 위해

단어가 주어진 문자로 시작하거나 끝나는 경우 일치합니다. (string)은 단어의 시작을 확인하고 (string)는 단어의 끝을 확인합니다.

ge

괴짜

얻다

이는 와 반대입니다. 즉, 문자열은 주어진 정규식으로 시작하거나 끝나서는 안 됩니다.

Bge

함께

임의의 십진수와 일치합니다. 이는 설정된 클래스 [0-9]와 동일합니다.

123

gee1

숫자가 아닌 문자와 일치합니다. 이는 집합 클래스 [^0-9]와 동일합니다.

괴짜

괴짜1

에스

모든 공백 문자와 일치합니다.

에스

이런 크스

기원전

에스

공백이 아닌 문자와 일치합니다.

에스

BD

ABCD

안에

모든 영숫자 문자와 일치하며 이는 [a-zA-Z0-9_] 클래스와 동일합니다.

안에

123

긱스4

안에

영숫자가 아닌 모든 문자와 일치합니다.

안에

>$

주다

와 함께

문자열이 주어진 정규식으로 끝나면 일치합니다.

ab

abcdab

바바밥

정규식 함수

답장 모듈에는 많은 것이 포함되어 있습니다 기능 일치하는 문자열을 검색하는 데 도움이 됩니다.

Python에서 정규 표현식을 사용하기 위해 이 모듈에서 제공하는 다양한 함수를 살펴보겠습니다.

기능 설명
re.findall() 목록에서 일치하는 모든 항목을 찾아 반환합니다.
다시 컴파일() 정규식은 패턴 객체로 컴파일됩니다.
다시 분할() 문자 또는 패턴의 발생으로 문자열을 분할합니다.
re.sub() 모든 문자나 패턴을 대체 문자열로 바꿉니다.
다시 탈출() 특수 문자를 이스케이프합니다.
연구() 처음 나타나는 문자나 패턴을 검색합니다.

정의와 예제를 통해 이러한 RegEx 함수의 작동을 살펴보겠습니다.

1. re.findall()

문자열의 패턴과 겹치지 않는 모든 일치 항목을 문자열 목록으로 반환합니다. 문자열은 왼쪽에서 오른쪽으로 스캔되며 일치하는 항목이 발견된 순서대로 반환됩니다.

패턴의 모든 발생 찾기

이 코드는 정규 표현식을 사용합니다 ( d+> ) 주어진 문자열에서 하나 이상의 숫자로 구성된 모든 시퀀스를 찾습니다. 숫자 값을 검색하여 목록에 저장합니다. 이 예에서는 숫자를 찾아 인쇄합니다. 123456789 그리고 987654321 입력 문자열에서.

파이썬3




import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

>

산출

['123456789', '987654321']>

2. 재컴파일()

정규식은 패턴 일치 검색이나 문자열 대체 수행과 같은 다양한 작업을 위한 메서드가 있는 패턴 개체로 컴파일됩니다.

예시 1:

코드는 정규식 패턴을 사용합니다. [a-e]> 입력 문자열에서 'a'부터 'e'까지 모든 소문자를 찾아 나열합니다. 네, 기벤슨 스타크 씨가 말했습니다. 출력은 다음과 같습니다 ['e', 'a', 'd', 'b', 'e']> , 이는 일치하는 문자입니다.

파이썬




import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))>

>

>

산출

['e', 'a', 'd', 'b', 'e', 'a']>

출력 이해:

  • 첫 번째 항목은 Aye에서 'e'이고 대소문자를 구분하므로 'A'가 아닙니다.
  • 다음 발생은 'a'라고 말한 다음 'd'이고 Gibenson의 'b'와 'e'이며 마지막 'a'는 Stark와 일치합니다.
  • 메타문자 백슬래시 ''는 다양한 시퀀스를 신호로 나타내므로 매우 중요한 역할을 합니다. 백슬래시를 메타 문자로서 특별한 의미 없이 사용하려면 ''를 사용하십시오.

예시 2: 세트 클래스 [s,.]는 모든 공백 문자 ',' 또는 '.'와 일치합니다.

코드는 정규식을 사용하여 주어진 입력 문자열에서 모든 단일 숫자와 일련의 숫자를 찾아 나열합니다. 그것은 한 자리 숫자를 찾습니다 d> 그리고 숫자의 시퀀스 d+> .

파이썬

자바의 array.sort




import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))>

>

>

산출

['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>

예시 3:

코드는 정규식을 사용하여 입력 문자열에서 단어 문자, 단어 문자 시퀀스 및 단어가 아닌 문자를 찾고 나열합니다. 일치하는 문자 또는 시퀀스 목록을 제공합니다.

파이썬




import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))>

>

>

산출

['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>

예시 4:

코드는 정규식 패턴 'ab*'를 사용하여 입력 문자열 ababbaabbb에서 'ab' 뒤에 0개 이상의 'b' 문자가 오는 모든 항목을 찾아 나열합니다. 다음과 같은 일치 목록을 반환합니다: ['ab', 'abb', 'abbb'].

파이썬




import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))>

>

내 컴퓨터 화면이 얼마나 큰데

>

산출

['ab', 'abb', 'a', 'abbb']>

출력 이해:

  • 우리의 RE는 ab*입니다. 'a'에는 no가 붙습니다. 0부터 시작하는 'b'입니다.
  • 출력 'ab'는 단일 'b'가 동반된 단일 'a' 때문에 유효합니다.
  • 출력 'abb'는 2개의 'b'가 동반된 단일 'a' 때문에 유효합니다.
  • 출력 'a'는 0 'b'가 동반된 단일 'a' 때문에 유효합니다.
  • 출력 'abbb'는 3개의 'b'가 동반된 단일 'a' 때문에 유효합니다.

3. 다시 분할()

문자열을 문자나 패턴의 발생 횟수로 분할하고, 해당 패턴을 찾으면 문자열의 나머지 문자가 결과 목록의 일부로 반환됩니다.

구문:

re.split(pattern, string, maxsplit=0, flags=0)>

첫 번째 매개변수인 패턴은 정규식을 나타내며, 문자열은 패턴을 검색하고 분할이 발생하는 주어진 문자열이며, 제공되지 않으면 maxsplit은 0 '0'으로 간주되고, 0이 아닌 값이 제공되면 기껏해야 많은 분할이 발생합니다. maxsplit = 1이면 문자열이 한 번만 분할되어 길이가 2인 목록이 됩니다. 플래그는 매우 유용하고 코드를 단축하는 데 도움이 될 수 있지만 필수 매개변수는 아닙니다. 예: 이 분할에서 flags = re.IGNORECASE , 대소문자, 즉 소문자 또는 대문자는 무시됩니다.

예시 1:

단어가 아닌 문자와 공백을 구분 기호로 사용하여 문자열을 분할하고 단어를 반환합니다. ['Words', 'words', 'Words']> . 아포스트로피를 단어가 아닌 문자로 간주합니다. ['Word', 's', 'words', 'Words']> . 단어가 아닌 문자와 숫자를 사용하여 분할합니다. ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . 숫자를 구분 기호로 사용하여 분할합니다. ['On ', 'th Jan ', ', at ', ':', ' AM']> .

파이썬




from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))>

>

>

산출

['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>

예시 2:

첫 번째 문은 하나 이상의 숫자가 처음 나타날 때 문자열을 분할합니다. ['On ', 'th Jan 2016, at 11:02 AM']> . 두 번째는 소문자 a부터 f를 구분 기호로 사용하고 대소문자를 구분하지 않고 문자열을 분할합니다. ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. 세 번째는 소문자 a부터 f를 구분 기호로 사용하여 문자열을 분할합니다. 대소문자를 구분합니다. ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

파이썬




import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))>

>

>

산출

['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>

4. re.sub()

함수의 'sub'는 SubString을 의미하며, 주어진 문자열(3번째 매개변수)에서 특정 정규식 패턴을 검색하고, 하위 문자열 패턴을 찾으면 repl(2번째 매개변수)로 대체되는 횟수를 count 확인하여 유지합니다. 이런 일이 발생합니다.

통사론:

 re.sub(pattern, repl, string, count=0, flags=0)>

예시 1:

  • 첫 번째 문은 모든 'ub' 항목을 '~*'(대소문자 구분 안 함)로 바꿉니다. 'S~*ject has ~*er booked already'> .
  • 두 번째 문은 모든 'ub'를 '~*'로 바꿉니다(대소문자 구분). 'S~*ject has Uber booked already'> .
  • 세 번째 문은 'ub'의 첫 번째 항목을 '~*'(대소문자 구분 안 함)로 바꿉니다. 'S~*ject has Uber booked already'> .
  • 네 번째는 'AND'를 ' & '(대소문자 구분 안 함)로 바꿉니다. 'Baked Beans & Spam'> .

파이썬




import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))>

>

>

산출

S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>

5. re.subn()

subn()은 출력을 제공하는 방식을 제외하고 모든 면에서 sub()와 유사합니다. 단순히 문자열이 아닌 전체 교체 횟수와 새 문자열이 포함된 튜플을 반환합니다.

통사론:

 re.subn(pattern, repl, string, count=0, flags=0)>

예:

re.subn()> 문자열에서 패턴의 모든 발생을 바꾸고 수정된 문자열과 대체 횟수가 포함된 튜플을 반환합니다. 대소문자를 구분하는 대체와 대소문자를 구분하지 않는 대체 모두에 유용합니다.

파이썬




import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])>

>

>

산출

('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already>

6. 다시 탈출()

영숫자가 아닌 모든 문자를 백슬래시로 묶어 문자열을 반환합니다. 이는 정규식 메타 문자가 있을 수 있는 임의의 리터럴 문자열을 일치시키려는 경우에 유용합니다.

통사론:

re.escape(string)>

예:

re.escape()> 문자열의 특수 문자를 이스케이프하는 데 사용되므로 정규식에서 패턴으로 사용하는 것이 안전합니다. 정규식에서 특별한 의미를 갖는 모든 문자가 리터럴 문자로 처리되도록 보장합니다.

파이썬




import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))>

>

>

산출

This is Awesome even 1 AM I Asked what is this [a-9], he said   ^WoW>

7. 다시 검색()

이 메소드는 None(패턴이 일치하지 않는 경우)을 반환하거나 re.MatchObject에 문자열의 일치하는 부분에 대한 정보가 포함됩니다. 이 방법은 첫 번째 일치 후에 중지되므로 데이터 추출보다 정규식을 테스트하는 데 가장 적합합니다.

예: 패턴 발생 검색

이 코드는 정규식을 사용하여 주어진 문자열에서 패턴을 검색합니다. 일치하는 항목이 발견되면 문자열에서 일치하는 부분을 추출하여 인쇄합니다.

이 특정 예에서는 I wasborn on June 24 입력 문자열에서 월(문자)과 일(숫자)로 구성된 패턴을 검색합니다. 일치하는 항목이 발견되면 전체 일치 항목인 월을 인쇄합니다. , 그리고 그날.

파이썬3




import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)>

>

>

산출

Match at index 14, 21 Full match: June 24 Month: June Day: 24>

세트

세트 '[]' 괄호로 묶인 문자 집합입니다. 세트는 대괄호 사이에 지정된 문자 세트의 단일 문자를 일치시키는 데 사용됩니다. 아래는 세트 목록입니다.

세트 설명
{N,} 앞의 문자나 그룹을 수량화하고 최소 n번 일치합니다.
* 앞의 문자나 그룹을 수량화하고 0개 이상의 항목과 일치합니다.
[0123] 지정된 숫자(0, 1, 2 또는 3)와 일치합니다.
[^아른] a, r 및 n을 제외한 모든 문자와 일치합니다.
모든 숫자(0-9)와 일치합니다.
[0-5][0-9] 00에서 59 사이의 두 자리 숫자와 일치합니다.
안에 모든 영숫자 문자(a-z, A-Z, 0-9 또는 _)와 일치합니다.
[a-n] a와 n 사이의 모든 소문자 알파벳과 일치합니다.
숫자가 아닌 문자와 일치합니다.
[안] 지정된 문자(a, r 또는 n) 중 하나가 존재하는 것과 일치합니다.
[a-zA-Z] a와 z, 소문자 또는 대문자 사이의 모든 문자와 일치합니다.
[0-9] 0에서 9 사이의 모든 숫자와 일치합니다.

일치 개체

Match 개체에는 검색 및 결과에 대한 모든 정보가 포함되어 있으며 일치하는 항목이 없으면 None이 반환됩니다. 일치 개체의 일반적으로 사용되는 메서드와 속성 중 일부를 살펴보겠습니다.

1. 문자열과 정규식 가져오기

match.re 속성은 전달된 정규식을 반환하고 일치.문자열 속성은 전달된 문자열을 반환합니다.

예: 일치하는 객체의 문자열과 정규식 가져오기

코드는 문자를 검색합니다. G 문자열의 단어 경계에서 GeeksForGeeks에 오신 것을 환영합니다. 정규식 패턴을 인쇄합니다. ( res.re> ) 그리고 원래 문자열 ( res.string> ) .

파이썬3

딕스트라




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)>

>

>

산출

re.compile('G') Welcome to GeeksForGeeks>

2. 일치하는 객체의 인덱스 얻기

  • start() 메소드는 일치하는 하위 문자열의 시작 인덱스를 반환합니다.
  • end() 메소드는 일치하는 하위 문자열의 끝 인덱스를 반환합니다.
  • span() 메소드는 일치하는 하위 문자열의 시작 및 끝 인덱스를 포함하는 튜플을 반환합니다.

예: 일치하는 객체의 인덱스 가져오기

코드는 Welcome to GeeksForGeeks 문자열의 단어 경계에서 하위 문자열 Gee를 검색하고 일치 항목의 시작 인덱스를 인쇄합니다(res.start()>), 일치의 끝 인덱스(res.end()>) 및 일치 범위(res.span()>).

파이썬3




import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())>

>

>

산출

11 14 (11, 14)>

3. 일치하는 하위 문자열 얻기

group() 메서드는 패턴이 일치하는 문자열 부분을 반환합니다. 더 나은 이해를 위해 아래 예를 참조하십시오.

예: 일치하는 하위 문자열 가져오기

코드는 Welcome to GeeksForGeeks 문자열에서 공백과 문자 't'가 뒤따르는 두 개의 숫자가 아닌 문자의 시퀀스를 검색하고 다음을 사용하여 일치하는 텍스트를 인쇄합니다. res.group()> .

파이썬3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())>

>

>

산출

me t>

위의 예에서 패턴은 뒤에 공백이 있고 해당 공백 뒤에 t가 오는 최소 2개의 문자를 포함하는 문자열을 지정합니다.

관련 기사:

참조:
https://docs.python.org/2/library/re.html

우리는 Python의 RegEx에 대해 논의했으며 RegEx Python의 메타 문자, 함수 및 특수 시퀀스를 살펴보았습니다.

정규 표현식은 Python에서 매우 중요한 개념이므로 이를 쉽게 설명하려고 노력했습니다. 여러분의 Python 여행에 도움이 되기를 바랍니다!!