전후방탐색(Lookaround)

Python 정규 표현식

Maria Eugenia Inzaugarat

Data Scientist

주변 살펴보기

  • 하위 패턴이 주 패턴의 앞 또는 뒤에 있는지 확인할 수 있습니다

   

Python 정규 표현식

주변 살펴보기

  • 하위 패턴이 주 패턴의 앞 또는 뒤에 있는지 확인할 수 있습니다

 

매칭 과정에서 현재 위치를 기준으로 앞이나 뒤를 살펴보고, 계속 진행하기 전에 특정 패턴이 일치하는지 확인합니다.

Python 정규 표현식

전방탐색(Look-ahead)

  • 비캡처 그룹입니다
  • 표현식의 앞부분 뒤에 전방탐색 표현식이 오는지 확인합니다
  • 표현식의 앞부분만 반환합니다

Python 정규 표현식

긍정 전방탐색(Positive Look-ahead)

  • 비캡처 그룹입니다
  • 표현식의 앞부분 뒤에 전방탐색 표현식이 오는지 확인합니다
  • 표현식의 앞부분만 반환합니다

 

my_text = "tweets.txt transferred, mypass.txt transferred, keywords.txt error"

re.findall(r"\w+\.txt ", my_text)
Python 정규 표현식

긍정 전방탐색(Positive Look-ahead)

  • 비캡처 그룹입니다
  • 표현식의 앞부분 뒤에 전방탐색 표현식이 오는지 확인합니다
  • 표현식의 앞부분만 반환합니다

 

my_text = "tweets.txt transferred, mypass.txt transferred, keywords.txt error"

re.findall(r"\w+\.txt(?=\stransferred)", my_text)
['tweets.txt', 'mypass.txt']
Python 정규 표현식

부정 전방탐색(Negative Look-ahead)

  • 비캡처 그룹입니다
  • 표현식의 앞부분 뒤에 전방탐색 표현식이 오지 않는지 확인합니다
  • 표현식의 앞부분만 반환합니다

 

my_text = "tweets.txt transferred, mypass.txt transferred, keywords.txt error"

re.findall(r"\w+\.txt ", my_text)
Python 정규 표현식

부정 전방탐색(Negative Look-ahead)

  • 비캡처 그룹입니다
  • 표현식의 앞부분 뒤에 전방탐색 표현식이 오지 않는지 확인합니다
  • 표현식의 앞부분만 반환합니다

 

my_text = "tweets.txt transferred, mypass.txt transferred, keywords.txt error"

re.findall(r"\w+\.txt(?!\stransferred)", my_text)
['keywords.txt']
Python 정규 표현식

후방탐색(Look-behind)

  • 비캡처 그룹입니다
  • 특정 패턴이 앞에 있는지 여부에 따라 일치하는 모든 항목을 가져옵니다
  • 후방탐색 표현식 뒤의 패턴을 반환합니다

Python 정규 표현식

긍정 후방탐색(Positive Look-behind)

  • 비캡처 그룹입니다
  • 특정 패턴이 앞에 있는 모든 일치 항목을 가져옵니다
  • 후방탐색 표현식 뒤의 패턴을 반환합니다

 

my_text = "Member: Angus Young, Member: Chris Slade, Past: Malcolm Young, Past: Cliff Williams."

re.findall(r" \w+\s\w+", my_text)
Python 정규 표현식

긍정 후방탐색(Positive Look-behind)

  • 비캡처 그룹입니다
  • 특정 패턴이 앞에 있는 모든 일치 항목을 가져옵니다
  • 후방탐색 표현식 뒤의 패턴을 반환합니다

 

my_text = "Member: Angus Young, Member: Chris Slade, Past: Malcolm Young, Past: Cliff Williams."

re.findall(r"(?<=Member:\s)\w+\s\w+", my_text)
['Angus Young', 'Chris Slade']
Python 정규 표현식

부정 후방탐색(Negative Look-behind)

  • 비캡처 그룹입니다
  • 특정 패턴이 앞에 없는 모든 일치 항목을 가져옵니다
  • 후방탐색 표현식 뒤의 패턴을 반환합니다

 

my_text = "My white cat sat at the table. However, my brown dog was lying on the couch."

re.findall(r"(?<!brown\s)(cat|dog)", my_text)
['cat']
Python 정규 표현식

연습해 봅시다!

Python 정규 표현식

Preparing Video For Download...