import re
# 示例字符串,前面故意多四個空白
string = " Hello, world! This is a sample string."
# 示例模式
pattern = r"\b\w{5}\b" # 匹配长度为5的单词
# 使用 re.match()
match_obj = re.match(pattern, string)
if match_obj:
print("Match found:", match_obj.group())
else:
print("No match")
# 使用 re.search()
search_obj = re.search(pattern, string)
if search_obj:
print("First match found:", search_obj.group())
else:
print("No match")
# 使用 re.findall()
matches = re.findall(pattern, string)
if matches:
print("All matches found:", matches)
else:
print("No matches")
code:
輸出結果:
re.match() 没有匹配到结果,因为它只尝试从字符串的起始位置进行匹配,而模式 r”\b\w{5}\b” 的首个匹配单词 “Hello” 不在字符串的起始位置。
re.search() 匹配到了第一个满足条件的单词 “Hello”,因为它会在整个字符串中搜索并返回第一个匹配结果。
re.findall() 匹配到了所有长度为5的单词,即 “Hello”、”world”。它会返回一个包含所有匹配结果的列表。
这个示例展示了 re.match()、re.search() 和 re.findall() 的不同之处。根据您的需求,您可以选择适当的方法来进行正则表达式的匹配和搜索。
请注意,示例中使用的模式 r”\b\w{5}\b” 是一个简单的示例模式,用于匹配长度为5的单词。您可以根据自己的需求修改模式。
\b 是一个正则表达式的元字符,表示单词边界。它匹配一个单词的开始或结束位置,即一个单词与非单词字符之间的位置。
具体来说,\b 在以下情况下会匹配:
单词的起始位置
单词的结束位置
单词字符与非单词字符之间的位置
re.fullmatch(patt, strr)
#要fullmatch 0-9的數字,90不match
AttributeError: ‘NoneType’ object has no attribute ‘group’
# 90不完整匹配,match_obj 是None,
# None.group()會報錯
match_obj = re.match(patt, strr)
#使用match 會return 9:
推薦hahow線上學習python: https://igrape.net/30afN