달력

3

« 2020/3 »

  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  


 

 

Match 객체의 메소드

method

설명

group()

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

start()

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

end()

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

span()

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

 

 

 

 

 

Match 객체 타입

<class '_sre.SRE_Match'>

 

 


'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

댓글을 달아 주세요


 

 

sub()

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

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

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

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

 

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

 

 

 

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

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

 

 

 

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

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

 

 

 

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

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

 

 

'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
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

댓글을 달아 주세요


 

 

반복 {m,n}

·         { } 메타 문자를 이용하면 반복 횟수 고정시킬 있습니다.

·         {m, n} 정규식을 사용하면 반복 횟수가 m부터 n까지인 것을 일치 시킬 있습니다. 또한 m 또는 n 생략할 수도 있습니다.

·         *, +, ? 메타문자는 모두 {m, n} 형태로 고쳐 쓰는 것이 가능하지만 가급적 이해하기 쉽고 표현도 간결한 *, +, ? 메타문자를 사용하는 것이 좋습니다.

 

 

regex

description

{m}

m 이상

{m, n}

반복 횟수가 m부터 n까지인

 

 

 

 

 

py{2}thon

"p + y(반드시 2 반복) + thon"

 

문자열

Match 여부

설명

python

X

"y" 1번만 반복되어 매치되지 않음

pyython

O

"y" 2 반복되어 매치

 

 

 

 

 

py{2,5}thon

"p + y(2~5 반복) + thon"

 

문자열

Match 여부

설명

python

X

"a" 1번만 반복되어 매치되지 않음

pyython

O

"a" 2 반복되어 매치

pyyyyython

O

"a" 5 반복되어 매치

 

 

 

 


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

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
정규 표현식에서 사용하는 특수문자  (0) 2020.01.26
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

반복 (+)

·         반복을 나타내는 다른 메타 문자

·         + 최소 1 이상 반복될 사용한다. , * 반복 횟수 0부터라면 + 반복 횟수 1부터가 됩니다.

 

 

 

 

 

 

 

py+thon

"p + y(1 이상 반복) + thon"

문자열

일치 여부

설명

pthon

X

"y" 0 반복되어 매치되지 않음

python

O

"y" 1 이상 반복되어 매치 (1 반복)

pyyython

O

"y" 1 이상 반복되어 매치 (3 반복)

 

 


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

re 모듈(regular expression)  (0) 2020.03.09
반복 {m,n}  (0) 2020.03.04
반복 (+)  (0) 2020.03.04
반복 (*)  (0) 2020.03.04
정규 표현식에서 사용하는 특수문자  (0) 2020.01.26
디자인패턴(Design Pattern)  (0) 2019.07.31
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

반복 (*)

'반복' 의미하는 메타문자

 

 

 

 

py*thon

사용된 * 의미는 *바로 앞에 있는 문자 y 0부터 무한대로 반복될 있다는 의미입니다.

 

문자열

일치 여부

설명

pthon

O

"y" 0 반복되어 매치

pyython

O

"y" 0 이상 반복되어 매치 (1 반복)

pyyython

O

"y" 0 이상 반복되어 매치 (3 반복)

pithon

X

"y" 반복되지 않아 일치하지 않음

 

 


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

반복 {m,n}  (0) 2020.03.04
반복 (+)  (0) 2020.03.04
반복 (*)  (0) 2020.03.04
정규 표현식에서 사용하는 특수문자  (0) 2020.01.26
디자인패턴(Design Pattern)  (0) 2019.07.31
정규표현식 문자  (0) 2019.05.08
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

정규 표현식에서 사용하는 특수문자

다음에 나오는 특수 문자를 문자열로 인식합니다.

특수문자

설명

^

·       문자열이나 행의 처음

·       입력 문자열의 시작 위치를 찾습니다.(라인의 처음과 패턴과 찾습니다.)

·       가령, ^A 라고 써주면 검색하고자 하는 문장의 시작문자가 A인지를 검사하는 것입니다.

$

·       문자열이나 행의

·       입력 문자열의 위치를 찾습니다.(라인의 끝과 패턴과 찾습니다.)

·       가령, $A 라고 써주면 검색하고자 하는 문장의 마지막문자가 A인지를 검사하는 것입니다.

*

·       0 이상의 문자를 찾습니다.

·       : "cg*" "cg", "cginjs" 등입니다.

+

·       1 이상의 문자를 찾습니다.

·       : "cg+" "cg", "cginjs" 등이지만 "c" 아닙니다.

?

·       0 또는 1개의 문자 의미.

·       : " C?j" 라면 C라는 문자와 j라는 문자사이에 문자가 0 또는 1 들어갈 있다는 말입니다.

·             Cj, Cnj, Cgj등과 같은..

.

·       "\n"(개행문자) 제외한 모든 단일 문자를 찾습니다.

·       "n" 포함한 모든 문자를 찾으려면 '[.n]' 패턴을 사용합니다.

()

·       한번 match 수행해서 나온 결과를 기억함.

·       : /(cnj)/ cnj라는 단어를 검색한 , 단어를 배열등과 같은 저장장소에 남겨두어 나중에 다시 호출할 있도록 합니다.

|

·       OR

{n}

·       정확히 n개의 문자(n 음이 아닌 정수)

·       : a{2} a 문자 , , aa 의미합니다.

{n,}

·       n정확히 n 찾습니다.(n,음이 아닌 정수)

·       : "c{2}" "cnj" "c" 찾지 않지만 "bcccccccccf" 모든 c 찾습니다.

{n,m}

·       최소 n, 최대 m 찾습니다.(n 음이 아닌 정수)

·       : "b{1,4}" "bcccccccccf" 처음 개의 c 찾습니다.

·       쉼표와 숫자 사이에는 공백을 넣을 없습니다.

[xyz]

·       괄호 안의 문자 하나를 찾습니다.(문자들의 set 의미)

·       가령, [a-z]라면 a부터 z까지의 모든 문자와 찾습니다.하는 것으로 []안의 - 범위를 나타냅니다.

·       괄호 안의 문자 하나를 찾습니다.

·       :, "[abc]" "cnj" "c" 찾습니다.

[^xyz]

·       제외 문자 집합입니다.(네가티브(-) 캐릭터 )

·       괄호 밖의 문자 하나를 찾습니다.

·       : "[^abc]" "acn" "n" 찾습니다.

x|y

·       x 또는 y 찾습니다.

·       : "c|cginjs" "c" 또는 "cginjs" 찾습니다.

[a-z]

·       문자 범위입니다.(지정한 범위 안의 문자를 찾습니다)

·       : "[a-z]" "a"부터 "z" 사이의 모든 소문자를 찾습니다.

[^a-z]

·       제외 문자 범위입니다(지정된 범위 밖의 문자를 찾습니다)

·       : "[^a-z]" "a"부터 "z" 사이에 없는 모든 문자를 찾습니다.

[b]

·       백스페이스와 찾습니다.

b

·       단어와 공백 사이의 위치를 찾습니다.(단어의 경계)

·       단어의 앞이나 뒤가 패턴과 일치하는지를 검색합니다.

·       : "erb" "never" "er" 찾지만 "verb" "er" 찾지 않습니다.

B

·       단어의 비경계를 찾습니다.

·        : "erB" "verb" "er" 찾지만 "never" "er" 찾지 않습니다.

cX

·       X 나타내는 제어 문자를 찾습니다.(control 문자와 찾습니다)

·       : cM Control-M , 캐리지 리턴 문자를 찾습니다.

·             x 값은 A-Z 또는 a-z 범위 안에 있어야 합니다.

·             그렇지 않으면 c 리터럴 "c" 문자로 간주됩니다.

d

·       0부터 9까지의 아라비아 숫자와 찾습니다.

·       [0-9] 같은 의미

D

·       숫자가 아닌 문자를 찾습니다.

·       [^0-9] 같습니다.

f

·       폼피드 문자(form-feed) 찾습니다.

·       x0c cL 같은 의미

n

·       linefeed( 바꿈 문자) 찾습니다.

·       x0a cJ 같은 의미

r

·       캐리지 리턴 문자를 찾습니다(x0d cM 같은 의미)

s

·       공백, , 폼피드( 바꿈 문자) 등의 공백을 찾습니다.

·       [ tnrfv] 같은 의미

S

·       s 아닌 문자(공백이 아닌 문자) 찾습니다.

·       [^ tnrfv] 같은 의미

t

·       문자를 찾습니다. (x09 cI 같은 의미)

v

·       수직 문자를 찾습니다.(x0b cK 같은 의미)

w

·       밑줄을 포함한 영문자 숫자를 찾습니다.

·       "[A-Za-z0-9_]" 같은 의미

W

·       영문자, 숫자가 아닌 문자, 문자가 아닌 요소를 찾습니다.

·       % 등과 같은 특수 문자를 의미

·       "[^A-Za-z0-9_]" 같은 의미

n

·       n 마지막 일치하는 문장

xn

·       n 찾습니다. 여기서 n 16진수 이스케이프 값입니다.

·       16진수 이스케이프 값은 정확히 자리여야 합니다.

·       : 'x41' "A" 찾고 'x041' 'x04' "1" 같습니다.

·              정규식에서 ASCII 코드를 사용할 있습니다.

num

·       num 찾습니다.(num 양의 정수)

·       캡처한 문자열에 대한 역참조입니다.

·       : '(.)1' 연속적으로 나오는 동일한 문자 개를 찾습니다.

nm

·       8진수 이스케이프 값이나 역참조를 나타냅니다.

·       nm 앞에 최소한 nm개의 캡처된 부분식이 나왔다면 nm 역참조입니다.

·       nm 앞에 최소한 n개의 캡처가 나왔다면 n 역참조이고 뒤에는 리터럴 m 옵니다.

·       경우가 아닐 n m 0에서 7 사이의 8진수이면 nm 8진수 이스케이프 nm 찾습니다.

nml

·       n 0에서 3 사이의 8진수이고 m l 0에서 7 사이의 8진수면 8진수 이스케이프 nml 찾습니다.

un

·       n 4 자리의 16진수로 표현된 유니코드 문자입니다.

·       : u00A9 저작권 기호() 찾습니다.

ooctal

xhex

·       8(octal)진수, 10(hex)진수

xhh

·       16진수 hh 해당하는 유니코드 문자를 검색합니다.

uhhhh

·       16진수 hhhh 해당하는 유니코드 문자를 검색합니다.

 

 

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

반복 (+)  (0) 2020.03.04
반복 (*)  (0) 2020.03.04
정규 표현식에서 사용하는 특수문자  (0) 2020.01.26
디자인패턴(Design Pattern)  (0) 2019.07.31
정규표현식 문자  (0) 2019.05.08
Regex Cross­word - regular expressions 퍼즐 게임  (0) 2019.04.20
Posted by codedragon codedragon

댓글을 달아 주세요


 

디자인 패턴(Design Pattern)

·       프로그램 설계 유형

·       소프트웨어 디자인(프로그램 개발)에서 계속 재현되는 문제를 해결하는 재사용 가능한 해결법 입니다.

·       소프트웨어 개발과정에서 발견된 Know-How를 축적하여 이름을 붙여 이후에 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 것입니다.

·       객체지향 프로그래밍에서 공통으로 디자인 문제를 찾아내고 해결하는 가이드라인 제공합니다.

·       특정 유형의 프로그래밍 문제를 해결하는 방식을 제공해주는 역할을합니다.

·       알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정 상황에서 구조적인 문제를 해결하는 방식을 설명합니다.

 

 

https://en.wikipedia.org/wiki/Design_Patterns

 

 

 

 

A sample UML class and sequence diagram for the Bridge design pattern.


https://en.wikipedia.org/wiki/Bridge_pattern

 


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

반복 (*)  (0) 2020.03.04
정규 표현식에서 사용하는 특수문자  (0) 2020.01.26
디자인패턴(Design Pattern)  (0) 2019.07.31
정규표현식 문자  (0) 2019.05.08
Regex Cross­word - regular expressions 퍼즐 게임  (0) 2019.04.20
RegExp 객체 생성  (0) 2019.02.04
Posted by codedragon codedragon

댓글을 달아 주세요



 

정규표현식 문자

표현식

설명

[pattern]

·       대괄호안에 있는 문자 

[^pattern]

·       대괄호안에 없는 문자 

.

·       줄바꿈이나 Unicode줄마침 문자를 제외한 아무 문자 

\w

·       ASCII 문자

·       [a-zA-Z0-9_] 동일

\W

·       ASCII 문자가 아닌 문자

·       [^a-zA-Z0-9_] 동일

\s

·       Unicode공백 문자

·       white space characters: space, new line and tab

\S

·       Unicode 공백 문자가 아닌 문자

·       \w \S 다르다는 것에 주의

\d

·       ASCII 숫자

·       [0-9] 동일

\D

·       ASCII 숫자가 아닌 문자

·       [^0-9] 동일

[\b]

·       백스페이스(특수한 경우)

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요