前後查找

Python 中的正規表示法

Maria Eugenia Inzaugarat

Data Scientist

環顧(Lookaround)

  • 用來確認子樣式在主樣式之前或之後

   

Python 中的正規表示法

環顧(Lookaround)

  • 用來確認子樣式在主樣式之前或之後

 

在目前的比對位置,向前或向後查看,檢查某個樣式是否(或不)符合,再繼續。

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