본문 바로가기

반응형

언어/Python

(142)
[ Python ] 정규 표현식에서 전방 탐색 기능에 대해서 알아보기 파이썬 정규 표현식에서 전방 탐색(Lookahead)은 특정 패턴이 특정 부분 문자열 앞에 있는지를 확인하지만, 그 부분 문자열을 소비(consumption)하지 않는 기능입니다. 이는 문자열의 매칭을 특정 조건에 따라 제한할 때 매우 유용합니다. 전방 탐색은 긍정 전방 탐색(positive lookahead)과 부정 전방 탐색(negative lookahead)으로 나뉩니다.1. 긍정 전방 탐색 (Positive Lookahead)긍정 전방 탐색은 특정 패턴이 뒤따르는 경우에만 매칭을 허용합니다. 구문은 (?=...)입니다.예제:패턴 A(?=B)는 B가 뒤따르는 A를 매칭합니다. 하지만 B는 매칭 결과에 포함되지 않습니다.2. 부정 전방 탐색 (Negative Lookahead)부정 전방 탐색은 특정 ..
[ Python ] match() 에서 표현식 (?? vs *? vs +?) 설명과 예제 파이썬 정규표현식에서 expr??, expr*?, expr+?의 차이는 패턴의 매칭 방식과 반복 횟수에 관련된 non-greedy 매칭을 제어하는 방법입니다. 아래는 각 표현식의 설명과 예제입니다.1. 설명expr??:expr?는 expr이 0번 또는 1번 나타나는 경우를 매칭합니다.expr??는 가능한 한 적게 매칭하려고 시도합니다. 즉, expr이 있으면 0번 나타나는 경우를 우선적으로 매칭합니다.expr*?:expr*는 expr이 0번 이상 나타나는 경우를 매칭합니다.expr*?는 가능한 한 적게 매칭하려고 시도합니다. 즉, expr이 없는 경우를 우선적으로 매칭합니다.expr+?:expr+는 expr이 1번 이상 나타나는 경우를 매칭합니다.expr+?는 가능한 한 적게 매칭하려고 시도합니다. 즉,..
[ Python ] match() 사용시 Greedy vs Non-Greedy 설명과 예제 파이썬에서 정규 표현식(regex)을 사용할 때, greedy와 non-greedy 매칭 방식의 차이는 매우 중요합니다. 이 두 가지 방식은 패턴이 가능한 한 많이 혹은 적게 매칭되는지를 결정합니다.1. Greedy (탐욕적) 매칭Greedy 매칭은 가능한 한 많이 매칭하려고 시도합니다. 기본적으로 정규 표현식의 메타 문자 *, +, ? 등은 greedy 방식입니다.예:패턴 .*는 가능한 한 많은 문자를 매칭합니다.2. Non-Greedy (비탐욕적) 매칭Non-Greedy 매칭은 가능한 한 적게 매칭하려고 시도합니다. 메타 문자 뒤에 ?를 붙여서 non-greedy 방식으로 만들 수 있습니다.예:패턴 .*?는 가능한 한 적은 문자를 매칭합니다.3. 예제다음은 greedy와 non-greedy 매칭의 차..
[ Python ] re.sub()를 사용해서 텍스트 교체하기 re.sub 함수는 파이썬의 re 모듈에서 제공하는 함수 중 하나로, 정규 표현식과 일치하는 문자열을 다른 문자열로 교체하는 데 사용됩니다. 이 함수는 일치하는 모든 부분을 한 번에 교체하며, 매우 강력한 문자열 조작 도구입니다.1. re.sub 함수의 사용법import reresult = re.sub(pattern, repl, string, count=0, flags=0)pattern: 정규 표현식 패턴입니다.repl: 교체할 문자열입니다.string: 검색할 문자열입니다.count: 선택적 인수로, 교체할 최대 횟수를 지정합니다. 기본값은 0이며, 이는 모든 일치 항목을 교체하는 것을 의미합니다.flags: 선택적 인수로, 정규 표현식의 동작을 수정하는 플래그입니다.2. 기본 예제import re# ..
[ Python ] 글 작성시 흔히 하는 실수를 정규 표현식으로 찾기 문서 작성 시 반복되는 단어(예: "the the")를 찾아내는 것은 정규 표현식을 사용하여 쉽게 처리할 수 있습니다. 이러한 실수는 흔히 발생하며, 정규 표현식을 사용하여 이를 찾아내고 수정할 수 있습니다.다음은 파이썬의 re 모듈을 사용하여 반복되는 단어를 찾아내는 방법에 대한 설명과 예제입니다.1. 정규 표현식 패턴 설명반복되는 단어를 찾기 위해 사용할 정규 표현식 패턴은 다음과 같습니다:\b(\w+)\b\s+\1\b이 패턴의 각 부분은 다음을 의미합니다:\b: 단어 경계(Word boundary)를 의미합니다.(\w+): 하나 이상의 단어 문자(알파벳, 숫자, 밑줄)와 일치하며, 이 일치 부분을 첫 번째 캡처 그룹에 저장합니다.\s+: 하나 이상의 공백 문자와 일치합니다.\1: 첫 번째 캡처 그룹..
[ Python ] re.findall()과 group() 메서드 사용하기 re.findall() 함수와 group() 메서드를 함께 사용하는 것은 일반적으로 일치하는 모든 패턴의 서브그룹을 추출할 때 유용합니다. re.findall() 함수는 모든 일치 항목을 리스트로 반환하며, 각 항목은 문자열이거나 튜플일 수 있습니다.1. re.findall()과 group()의 차이점re.findall(): 주어진 패턴과 일치하는 모든 문자열을 리스트로 반환합니다. 패턴에 그룹이 있다면, 그룹화된 부분 문자열을 튜플로 반환합니다.group(): re.Match 객체의 메서드로, 특정 일치 그룹을 반환합니다.2. 예제와 출력1. 단순 패턴 매칭import re# 예제 문자열string = "My phone number is 123-456-7890 and 987-654-3210."# 정규 ..
[ Python ] re.findall() 사용하기 re.findall 함수는 파이썬의 re 모듈에서 제공하는 함수로, 주어진 문자열에서 정규 표현식 패턴과 일치하는 모든 부분 문자열을 찾아 리스트로 반환합니다. re.findall은 패턴이 문자열에서 일치하는 모든 부분을 검색하여 결과를 리스트로 제공합니다.1. re.findall 사용법import reresult = re.findall(pattern, string, flags=0)pattern: 정규 표현식 패턴입니다.string: 검색할 문자열입니다.flags: 선택적 인수로, 정규 표현식의 동작을 수정하는 플래그입니다.2. 플래그re.IGNORECASE 또는 re.I: 대소문자를 구분하지 않습니다.re.MULTILINE 또는 re.M: 여러 줄 모드. ^ 및 $가 각 줄의 시작과 끝을 의미하게 됩니..
[ Python ] re.search() 사용하기 (이름 찾기) re.search는 파이썬의 re 모듈에서 제공하는 함수 중 하나로, 주어진 문자열에서 정규 표현식 패턴과 일치하는 첫 번째 부분 문자열을 찾습니다. re.search는 패턴이 문자열의 어느 위치에서든 일치하는지를 검색하며, 일치하는 부분이 있으면 re.Match 객체를 반환하고, 없으면 None을 반환합니다.1. re.search 사용법import reresult = re.search(pattern, string, flags=0)pattern: 정규 표현식 패턴입니다.string: 검색할 문자열입니다.flags: 선택적 인수로, 정규 표현식의 동작을 수정하는 플래그입니다.2. 플래그re.IGNORECASE 또는 re.I: 대소문자를 구분하지 않습니다.re.MULTILINE 또는 re.M: 여러 줄 모드..

반응형