Python - 檢查字串是否匹配正則表示式列表


正則表示式也稱為regex,它是由構成搜尋模式的一系列字元組成的。它是用於模式匹配和操作字串的強大工具之一。在Python中,我們有一個名為`re`的模組,它有助於形成正則表示式。

正則表示式模式由普通字元(例如字母、數字)和稱為元字元的特殊字元組成。元字元具有特殊含義,允許我們定義複雜的搜尋模式。以下是Python正則表示式中一些常用的元字元。

  • . (點) − 匹配除換行符之外的任何單個字元。

  • ^ (脫字元) − 匹配字串的開頭。

  • $ (美元符號) − 匹配字串的結尾。

  • * (星號) − 匹配前面模式的零個或多個出現。

  • + (加號) − 匹配前面模式的一個或多個出現。

  • ? (問號) − 匹配前面模式的零個或一個出現。

  • [] (方括號) − 定義一個字元類,並匹配括號內的任何單個字元。

  • () (圓括號) − 將模式組合在一起並捕獲匹配的子字串。

  • \ (反斜槓) − 轉義元字元或引入特殊序列。

其他附加的正則表示式支援表示常見模式的特殊序列,如下所示。

  • \d − 匹配任何數字,相當於[0-9]。

  • \w − 匹配任何字母數字字元,相當於[a-zA-Z0-9_]。

  • \s − 匹配任何空白字元。

  • \b − 匹配單詞邊界。

  • \A − 匹配字串的開頭,類似於^,但不尊重多行模式。

  • \Z − 匹配字串的結尾,類似於$,但不尊重多行模式。

在Python中,有多種方法可以檢查字串是否與正則表示式(regex)列表匹配。讓我們一一檢視每種方法。

使用`re`模組

Python中的're'模組提供用於處理正則表示式的函式。我們可以使用re模組中的're.match()'函式來檢查字串是否與正則表示式模式匹配,並且要檢查正則表示式模式列表,我們可以遍歷列表併為每個模式呼叫're.match()'

示例

在此示例中,re.match()函式用於檢查字串是否與regex_list中的每個模式匹配。如果找到匹配項,它將列印模式。

import re
string = "Hello, Welcome to Tutorialspoint!"
regex_list = [r"Hello", r"\bWelcome\b", r"\d+"]
for pattern in regex_list:
   if re.match(pattern, string):
      print(f"String matches pattern: {pattern}")

輸出

String matches pattern: Hello

使用列表推導式和`re.search()`

查詢匹配模式的另一種方法是使用列表推導式和re.search()函式。透過使用列表推導式而不遍歷正則表示式列表,我們可以建立一個包含匹配模式的新列表。

示例

在此示例中,我們使用包含程式碼行[pattern for pattern in regex_list if re.search(pattern, string)]的列表推導式,它建立一個包含來自regex_list的與字串匹配的正則表示式模式的新列表matching_patterns。然後,我們使用re.search()函式在字串中查詢模式的第一次出現。

import re
string = "Hello,happy learning!"
regex_list = [r"Hello", r"\bWelcome\b", r"\d+"]
matching_patterns = [pattern for pattern in regex_list if re.search(pattern, string)]
print("Matching patterns:", matching_patterns)

輸出

Matching patterns: ['Hello']

使用`any()`函式和`re.search()`

any()函式是Python中可用於檢查正則表示式列表序列中的任何元素是否為true的函式之一。我們可以將其與re.search()結合使用以檢查任何正則表示式模式是否與字串匹配。

示例

在此示例中,any()函式用於迭代正則表示式列表的元素,並使用re.search()檢查任何模式是否與字串匹配。如果找到匹配項,它將列印"字串至少與一個模式匹配"。

import re
string = "Hello, Welcome to Tutorialspoint!"
regex_list = [r"Hello", r"\bWelcome\b", r"\d+"]
if any(re.search(pattern, string) for pattern in regex_list):
   print("String matches at least one pattern")

輸出

String matches at least one pattern

更新於:2023年8月2日

11K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.