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
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP