달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  


 

 

 

그룹핑 이름 생성하기

·       (?...) 표현식은 정규표현식의 확장구문입니다.

·       여기서 ...은 다양하게 변한다는 anything의 의미를 가지며 ... 정규표현식이 오게됩니다.

·       Named Capturing Group 지정 방법은 (?P<그룹명>정규식) 와 같이 정규표현식 앞에 ?P<그룹명>으로 그룹핑명을 지정합니다.

 

(?P<그룹명>...)

 

 

 

 

그룹명 사용

·       정규표현식 내에서 그룹명을 재참조할 있습니다.

·       MatchObject에서 group('그룹명') 을 호출하면 캡쳐된 그룹 값을 확인할 수 있습니다.

 

(?P=그룹명)

group('그룹명')

 

 


'Development > Regular Expression' 카테고리의 다른 글

그룹핑 이름 생성하기, 그룹명 사용  (0) 2020.06.28
메타문자 ^  (2) 2020.06.20
예외 문자(Escape Character)  (0) 2020.06.04
정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Posted by codedragon codedragon

댓글을 달아 주세요


 

^

메타문자

의미

^

·       행 머리(문자열의 처음, 라인의 처음을 의미)

·       ^ 문자는 패턴의 시작 알림

·       ^ 문자만 패턴의 앞에 있습니다.

·       문자 클래스 내에 ^ 메타 문자가 사용될 경우( [^] )에는 반대(not)라는 의미를 가집니다.

·       re.MULTILINE 을 사용할 경우에는 여러줄의 문자열 각 라인의 처음과 일치해야 합니다.

 

[^]

·       [문자들]의 반대로 피해야할 문자들의 집합을 정의합니다.

 

 

 

정규 표현식

설명

^abc

abc 시작해야 합니다. (abcd, abc12 )

^python

문자열의 처음은 항상 python으로 시작해야 합니다.

[^0-9]

숫자가 아닌 문자만 매치

[^XYZ]

X Y Z 아닌 1문자

[^aeiou]

소문자 모음이 아닌 문자들

 

 

 


'Development > Regular Expression' 카테고리의 다른 글

그룹핑 이름 생성하기, 그룹명 사용  (0) 2020.06.28
메타문자 ^  (2) 2020.06.20
예외 문자(Escape Character)  (0) 2020.06.04
정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Posted by codedragon codedragon

댓글을 달아 주세요

  1. tariat 2020.06.29 07:00 신고  댓글주소  수정/삭제  댓글쓰기

    공감가는 내용이네요. 잘 봤습니다. ㅎ


 

 

예외 문자(Escape Character)

특수 문자로 이루어진 패턴을 찾을 특수 문자를 원래의 기호로 인식시키기 위해 역슬래시(\)문자와 함게 사용합니다.

 


'Development > Regular Expression' 카테고리의 다른 글

그룹핑 이름 생성하기, 그룹명 사용  (0) 2020.06.28
메타문자 ^  (2) 2020.06.20
예외 문자(Escape Character)  (0) 2020.06.04
정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Posted by codedragon codedragon

댓글을 달아 주세요

 

 

 

정규표현식 sample

 

pattern

description

.{3}

문자 3 (F15, 0x0 )

^abc

abc 시작해야 합니다. (abcd, abc12 )

python$

문자열의 마지막은 항상 python으로 끝나야 합니다

xyz$

xyz로 종료되어야 합니다. (123xyz, strxyz )

\s\s

화이트 스페이스(whitespace) 문자 2개를 의미합니다. (\r\n, \t\t )

\w\w\w

문자(alphanumeric) 3개를 의미 (xyz, ABC )

\d\d\d

0 ~ 9 범위의 숫자가 3개를 의미 (123, 000 )

X?

X 0개인 문자 또는 1 문자

\d?

숫자가 하나 있거나 없어야 합니다.

X*

X 0 이상인 문자 반복

\d*

숫자가 없거나 하나 이상이어야 합니다.

X+

X 1 이상인 문자 반복

\d+

숫자가 하나 이상이어야 합니다

X{3}

X 3 반복되는 문자

\d{3}

숫자가 3개 있어야 합니다.

X{3,5}

X 최소 3부터 5 반복하는 문자

\d{3,5

숫자가 3, 4개 혹은 5개 있어야 합니다.

X|Y

X 또는 Y

[XYZ]

X또는 Y 또는 Z 1 문자

[Pp]ython

"Python" 혹은 "python"

[^XYZ]

X Y Z 아닌 1문자

[^aeiou]

소문자 모음이 아닌 문자들

[^ ]

공백이 없는 문자열을 의미합니다.

 

 

\S+@\S+

'@' 문자 앞 뒤로 공백이 아닌 문자(\S)가 오는 문자열 패턴

[a-z]+

소문자 알파벳으로 시작하는 패턴

Code|Dragon

Code 또는 Dragon 단어로 시작하는 문자열을 패턴

^Python

"Python"라는 문자열이 처음에 온 경우에는 매치되지만 처음 위치가 아닌 경우에는 매치되지 않습니다.

r'\bclass\b')

"class"문자열 앞뒤에 \b(whitespace)문자를 하나씩 가진 raw string 패턴

r'\Bclass\B')

"class"문자열 앞뒤에 \b(whitespace)문자가 아닌 raw string 패턴

[0-9]+

 0부터 9까지 중 하나의 문자가 1번 이상 반복되는 패턴

정수로 이루어진 데이터를 찾는 패턴

에러\s\d+

'에러'문자뒤에 공백(\b)문자 하나온 후 숫자 0 ~ 9(\d)가 오는 패턴

\section

\s 공백문자를 의미해서 공백문자 다음 ection 문자열이 오는 패턴

(CODE)+

CODE라는 문자열이 계속해서 반복되는지 조사하는 정규식

\d+[-]\d+[-]\d+

전화번호 형태의 문자열을 찾는 패턴

r'\d\d\d-\d\d\d-\d\d\d\d'

전화번호 형태의 문자열을 찾는 패턴

\w+\s+\d+[-]\d+[-]\d+

이름 + " " + 전화번호 형태의 문자열을 찾는 패턴

^F.+?:

F 시작하는 문자이고 : 문자가 포함되어 끝나는 문자열 패턴

"From: " 형태의 문자열 찾기

<.*?>

<html> 형태의 시작태그 문자열

\$[0-9,.]+

$ 나오고 하나 이상의 숫자나 쉼표, 마침표가 나오는 문자열 패턴

$1,569.00

^python\s\w+

"python"이라는 문자열로 시작하고 그 후에 whitespace, 그 후에 단어가 와야합니다.

r'([a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4}){1,2})'

email 정규표현식

codedragon@example.com

^From .*@([^ ]*)

From문자열로 시작하고 뒤에 공백이 따라오고 어떤 문자든 몇번이든 나온다음 @문자가 나오는 패턴

 

(\d{6})[-]\d{7}

주민번호 정규식

 

 


'Development > Regular Expression' 카테고리의 다른 글

메타문자 ^  (2) 2020.06.20
예외 문자(Escape Character)  (0) 2020.06.04
정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Match 객체의 메소드  (0) 2020.03.27
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

컴파일 옵션

·       정규식을 컴파일할 때 추가적인 기능 사용할 있는 옵션을 지정할 있습니다.

·       옵션을 사용할 때는 re.DOTALL 처럼 전체 옵션명을 써도 되고 괄호안의 약어 써서 re.S 처럼 사용할 수도 있습니다.

·       여러 개의 옵션을 지정 경우 | 기호로 옵션을 나열해 주면 됩니다. (re.VERBOSE|re.MULTILINE)

 

옵션

설명

re.DOTALL

(re.S)

·       . 메타문자가 줄바꿈 문자(\n)를 포함하여 모든 문자와 매치할 수 있도록 합니다.

·       . 메타 문자는 줄바꿈 문자(\n)를 제외한 모든 문자와 매치되는 규칙이 있습니다. 만약 \n 문자도 포함하여 매치하고 싶다면 re.DOTALL 또는 re.S 옵션을 사용해 정규표현식을 컴파일을 수행합니다.

re.IGNORECASE

(re.I)

·       대소문자 구분을 무시합니다.

·       대소문자에 관계없이 매치할 있도록 정규표현식을 컴파일합니다.

re.MULTILINE

(re.M)

·       여러줄과 매치할 수 있도록 합니다.

 


re.VERBOSE

(re.X)

·       복잡한 정규식 표현 만들 사용할 있는 옵션입니다.

·       verbose 모드를 사용할 수 있도록 합니다.

·       verbose 모드는 정규표현식을 보기 편하게 만들 있고 주석을 사용 있게 해줍니다.

 


 

 

 


'Development > Regular Expression' 카테고리의 다른 글

예외 문자(Escape Character)  (0) 2020.06.04
정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Match 객체의 메소드  (0) 2020.03.27
sub()  (0) 2020.03.21
Posted by codedragon codedragon

댓글을 달아 주세요


 

groups()

·       그룹핑된 문자열을 튜플(tuple) 형태로 반환합니다.

·       반환 튜플은 언패킹(Unpacking) 통해 각각의 변수에 담아서 사용할 있습니다.

 

 

matchobject.groups()

 


'Development > Regular Expression' 카테고리의 다른 글

정규표현식 sample  (0) 2020.04.15
정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Match 객체의 메소드  (0) 2020.03.27
sub()  (0) 2020.03.21
Greedy(탐욕스러운), non-greedy 문자 ?  (0) 2020.03.16
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Match 객체의 메소드

method

설명

group()

매치된 문자열을 반환합니다.

start()

매치된 문자열의 시작 위치를 반환합니다.

end()

매치된 문자열의 끝 위치를 반환합니다.

span()

매치된 문자열의 (시작, ) 에 해당되는 튜플(tuple)을 반환합니다.

 

 

 

 

 

Match 객체 타입

<class '_sre.SRE_Match'>

 

 


'Development > Regular Expression' 카테고리의 다른 글

정규표현식 컴파일 옵션  (0) 2020.04.08
groups()  (0) 2020.04.01
Match 객체의 메소드  (0) 2020.03.27
sub()  (0) 2020.03.21
Greedy(탐욕스러운), non-greedy 문자 ?  (0) 2020.03.16
re 모듈(regular expression)  (0) 2020.03.09
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

sub()

·       파이썬 {re} 내장모듈의 메소드입니다.

·       sub() 메서드의 첫 번째 입력 인수는 "바꿀 문자열(replacement)"이 되고, 두 번째 입력 인수는 "대상 문자열"이 됩니다.

·       count 매개변수로 바꾸기 횟수를 지정할 있습니다.

·       딱 한 번만 바꾸고 싶은 경우  세 번째 매개변수로 count 값을 지정해 바꾸기 횟수를 지정해 주면 됩니다.

 

sub('바꿀문자열', '대상문자열', count=횟수)

 

 

 

sub()의 바꿀 문자열 부분에 \g<그룹명>을 이용하면 정규표현식의 그룹명을 참조할 수 있습니다.

sub('\g<그룹명>', '대상문자열', count=횟수)

 

 

 

\g<그룹참조번호>을 이용해도 정규표현식에 그룹명으로 지정한 그룹핑을 참조할 수 있으며 그룹참조번호는 1부터 시작합니다.

sub('\g<그룹참조번호>', '대상문자열', count=횟수)

 

 

 

sub()메서드의 첫 번째 입력 인자로 함수를 넣을 수도 있습니다.

sub(함수명, '대상문자열', count=횟수)

 

 

'Development > Regular Expression' 카테고리의 다른 글

groups()  (0) 2020.04.01
Match 객체의 메소드  (0) 2020.03.27
sub()  (0) 2020.03.21
Greedy(탐욕스러운), non-greedy 문자 ?  (0) 2020.03.16
re 모듈(regular expression)  (0) 2020.03.09
반복 {m,n}  (0) 2020.03.04
TAG PYTHON
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Greedy(탐욕스러운)

* 메타문자는 매우 탐욕스러워서 매치할 수 있는 최대한의 문자열을 취합니다.

 

import re

 

target = '<html><head><title>Title</title></head><body></body></html>'

print(re.match('<.*>', target).group())

<html><head><title>Title</title></head><body></body></html>

 

 

 

 

 

 

non-greedy 문자 ?

·       non-greedy 문자인 ?을 사용하면 *의 탐욕을 제한(greedy 제한)할 수 있습니다.

·       non-greedy 문자인 ? *?, +?, ??, {m,n}?과 같이 사용할 수 있습니다.

·       가능한 한 가장 최소한의 반복을 수행하도록 도와주는 역할을 합니다.

 

 

print(re.match('<.*?>', target).group())

<html>

 

 

 

 


'Development > Regular Expression' 카테고리의 다른 글

Match 객체의 메소드  (0) 2020.03.27
sub()  (0) 2020.03.21
Greedy(탐욕스러운), non-greedy 문자 ?  (0) 2020.03.16
re 모듈(regular expression)  (0) 2020.03.09
반복 {m,n}  (0) 2020.03.04
반복 (+)  (0) 2020.03.04
Posted by codedragon codedragon

댓글을 달아 주세요


 

re 모듈을 통한 정규표현식 사용

·       {re} 모듈의 compile() 함수는 정규식 패턴을 입력으로 받아들여 정규표현식 객체 리턴합니다. re.compile('검색할문자열')형식으로 함수를 호출하면 정규표현식 객체 (re.RegexObject 클래스 객체)를 리턴합니다.

·       re.compile()함수를 이용하여 정규표현식(py*thon)을 컴파일하고 컴파일된 패턴객체( re.compile() 메소드의 결과로 리턴되는 객체(pt) )를 이용하여 그 이후의 작업을 수행하게 됩니다.

 

 

import re

pt = re.compile('py*thon')

 

 

구분

단계

코드

1

re 모듈 임포트

 

 

import re

2

패턴 생성

re.compile()함수로 Regex 객체를 생성합니다.

인자로 raw string 사용합니다.

 

 

re.compile()

3

문자열 검색

정규식을 이용한 문자열 검색 메소드 search() 인자로 검색할 문자열을 전달하면 Match객체가 반환됩니다.

 

 

regex.search(target)

 

4

매칭결과 확인

group()함수로 실제 매칭된(검색된) 문자열을 반환합니다.

 

 

matchobject.group()

 

 

 

 

패턴(pattern)

정규표현식을 컴파일한 결과를 의미합니다.

 

 

 

 

 

 

Match 객체 타입

<class '_sre.SRE_Match'>

 

 

'Development > Regular Expression' 카테고리의 다른 글

sub()  (0) 2020.03.21
Greedy(탐욕스러운), non-greedy 문자 ?  (0) 2020.03.16
re 모듈(regular expression)  (0) 2020.03.09
반복 {m,n}  (0) 2020.03.04
반복 (+)  (0) 2020.03.04
반복 (*)  (0) 2020.03.04
Posted by codedragon codedragon

댓글을 달아 주세요