본문 바로가기

프로그래밍/정규표현식9

[정규 표현식] 탐욕 수량자(Greedy Match)와 게으른 수량자(Lazy, Non-greedy Match) 이번 포스팅에서는 탐욕 수량자(Greedy Match)와 게으른 수량자(Lazy, Non-greedy Match)에 대한 개념을 소개하고 파이썬(Python)을 통한 예제를 알아보자. 이때 수량자에 대한 내용을 모르는 분들은 여기를 참고하면 좋다. 탐욕 수량자(Greedy Match)와 게으른 수량자(Lazy, Non-greedy Match) 1) 탐욕 수량자(Greedy Match) 탐욕 수량자는 패턴 매칭이 중간에서 멈추지 않고 마지막까지 찾는 수량자를 말한다. 적당히를 모르고 욕심이 많아서 찾을 수 있는 곳까지 찾는다 하여 탐욕 수량자라고 하는 것 같다. 일반적으로 사용하는 수량자는 모두 탐욕 수량자이다. 예를 들어 'aacefasdfc'라는 문자열을 a.*c라는 패턴을 찾는다고 해보자. 온라인 정.. 2022. 10. 26.
[정규 표현식] 응용 (2) 숫자인지 아닌지 확인하기 with Python 얼마 전 파이썬(Python) 코딩을 하다가 해당 문자열이 숫자인지 아닌지 확인하는 정규 표현식을 만들어야 했다. 이 내용을 공유하면 좋을 것 같아서 이번 포스팅에서 그 방법을 알아보기로 한다. 문자열이 숫자인지 아닌지 확인하기 찾고자 하는 숫자 문자열이 다음과 같다. 2.3, 23, -23.02, .25, -.27 지난 포스팅에서 정규 표현식을 만들어가는 방법에는 White List와 Black List 방식이 있다고 했다. 이번 문제에서는 Black List 방식으로는 표현식이 매우 복잡할 것이다. 왜냐하면 포함되면 안 되는 문자들이 너무 많기 때문이다(알파벳, 특수문자 !@#$ 등). 따라서 White List 방식으로 정규 표현식을 만들고자 한다. 1 단계) 먼저 음수 부호가 맨 앞에 포함되거나 .. 2022. 10. 13.
[정규 표현식] 응용 (1) URI(URL)에서 정보 가져오기 with Python 이번 포스팅에서는 지금까지 배운 정규 표현식 내용을 바탕으로 실전 문제에 응용하는 방법을 알아보자. 여기서는 파이썬(Python)을 이용하여 URL에서 변수와 값을 가져오는 방법을 알아보고자 한다. URI(URL)에서 정보 가져오기 먼저 다음과 같은 문자열이 있다고 해보자. https://regex101.com/index.html?address=seoul&en=utf-8 HTTP/1.0 만약 아래와 같이 URL의 변수와 값 영역만을 가져오고 싶다면 어떻게 해야 할까? 정규 표현식을 만드는 방법에는 White List, Black List 방식이 있다고 한다. White List는 검사 범위에 포함되는 문자열 패턴을 만들어나가는 방식이고 Black List 방식은 검사 범위에 포함되지 않는 문자열 패턴을 .. 2022. 10. 11.
[정규 표현식] re 모듈 알아보기 (3) finditer 사용법과 findall과의 차이 이번 포스팅에서는 re 모듈에서 finditer 사용법과 이와 비슷한 findall과 finditer의 차이가 무엇인지 알아보려고 한다. finditer 사용법과 findall 과의 차이 1) finditer 사용법 finditer는 패턴과 검사 문자열을 입력받아서 매칭되는 부분이 있다면 Match 객체로 이루어진 Iterator를 리턴한다. finditer의 사용법은 다음과 같다. finditer( 패턴, 검사 문자열 ) 아래 코드를 통해 실제 사용법을 익힐 수 있다. import re pattern = r'\d+\s' string = '1234 5678 1313' print([x for x in re.finditer(pattern, string)]) ## Match 객체 출력 print([x.grou.. 2022. 10. 1.
[정규 표현식] 역 참조(Back reference) 알아보기 정규 표현식에는 검사 결과를 재활용할 수 있는 역 참조(Back Reference)라는 것이 있다. 검사 패턴으로 매칭된 결과를 다시 참조한다고 해서 역 참조라고 하는 것 같다. 이번 포스팅에서는 역참조에 대해서 알아보려고 한다. 이번 포스팅에서는 re.sub를 주로 사용하므로 사용법을 모르는 분들은 아래 포스팅을 미리 보고 오면 도움이 된다. [정규 표현식] re 모듈 알아보기 (2) 대체하기 (feat. re.sub) [정규 표현식] re 모듈 알아보기 (2) 대체하기 (feat. re.sub) re 모듈에서 sub 함수는 특정 패턴이 일치하는 부분을 원하는 텍스트로 바꿔주는 기능을 한다. 오늘은 re.sub 함수 사용법을 알아보자. re.sub 사용법 re 모듈에서 sub 함수는 특정 패턴이 일치하.. 2022. 10. 1.
[정규 표현식] re 모듈 알아보기 (2) 대체하기 (feat. re.sub) re 모듈에서 sub 함수는 특정 패턴이 일치하는 부분을 원하는 텍스트로 바꿔주는 기능을 한다. 오늘은 re.sub 함수 사용법을 알아보자. re.sub 사용법 re 모듈에서 sub 함수는 특정 패턴이 일치하는 부분을 모두 찾고 매칭된 부분을 원하는 텍스트로 바꿔준다. re.sub 사용법은 다음과 같다. re.sub( 패턴, 대체 텍스트, 검사 텍스트) 코드를 통해 re.sub 사용법을 알아보자. 아래 코드는 괄호 안 숫자를 '*'로 바꿔주는 작업을 수행한다. import re string = '(123)-(456)-(789)' print(re.sub(r'\(\d+\)', '*', string))## 괄호안 숫자를 별표로 표시 이번 포스팅에서 알아본 re.sub의 기능은 별 볼일 없어 보일 수도 있다. .. 2022. 9. 30.
[정규 표현식] 메타 문자 알아보기 이번 포스팅에서는 정규 표현식 패턴의 기본이라고 할 수 있는 메타 문자에 대해서 알아보려고 한다. - 목차 - 1. 메타 문자란? 2. 검사 범위가 자동 지정 메타 문자 3. 수량 지정 메타 문자 4. 검사 범위 수동 지정 메타 문자 5. 검사 위치 메타 문자 1. 메타 문자란? 메타 문자는 단순 문자가 아닌 다른 용도로 사용되는 문자를 말하며 단일 문자 또는 백 슬래쉬 '\' + 단일 문자의 형태로 사용된다. 메타 문자는 검사 범위를 지정(자동 또는 수동)하거나 수량 그리고 검사 위치를 나타내는 등 그 기능에 따라 세부적인 분류를 할 수 있다. 이제 이러한 메타 문자들의 기능을 파이썬 코드와 함께 알아보자. 2. 검사 범위가 자동 지정 메타 문자 메타 문자 중에는 검사 범위가 자동으로 지정된 것들이 있.. 2022. 9. 26.
[정규 표현식] 알파벳 패턴 대소문자 상관없이 매칭하기 (feat. (?i), re.IGNORECASE) 알파벳으로 이루어진 문자열에서 패턴 매칭을 하다 보면 대소문자 구분하지 않고 매칭하고 싶을 때가 있다. 해당 정규 표현식으로는 (?i)가 있고 re 모듈에서 re.IGNORECASE를 이용하면 대소문자 구분 없이 패턴 매칭을 할 수 있다. 이번 포스팅에서는 대소문자 구분없이 패턴 매칭하는 방법을 알아보려고 한다. 대소문자 상관없이 매칭하기 먼저 다음 예제를 살펴보자. 아래 코드는 'banana' 패턴이 매칭되는 문자열을 찾는다. 실행하면 대문자가 섞여있는 것은 패턴 매칭이 안된다. import re pattern = re.compile('banana') string_list = ['banana', 'Banana', 'BANANA', 'baNana'] for string in string_list: ## .. 2022. 9. 18.
[정규 표현식] re 모듈 알아보기 (1) 패턴 찾기 (feat. re.match, re.search, re.findall) re 모듈은 문자열에서 특정 패턴을 만족하는 문자열을 찾고 싶을 때 유용한 기능을 제공하는 모듈이다. 특히 re 모듈에서 제공하는 match, search, findall 함수는 패턴과 매칭되는 문자열을 찾는 대표적인 방법이다. 이번 포스팅에서는 re 모듈에서 문자열 패턴을 찾는 방법을 알아보고자 한다. re 모듈 - 패턴 찾기 1) 문자열 시작 부분만 살펴볼게~ : match match는 주어진 패턴이 문자열 시작 부분과 매칭되면 re.Match 객체를 반환하고 매칭이 안되면 None, 즉 아무것도 반환하지 않는다. 아래 코드는 알파벳 소문자 한 개로 이루어진 문자를 찾는 과정이다. 이때 두 번째 문자열 'Hi how are you?'는 문자열 시작 부분이 대문자이므로 패턴 매칭이 안된다. re.Mat.. 2022. 9. 18.

맨 위로