攝影或3C

Python 正則表示法 regular expression: re.match() ; re.search() ; re.findall() ; re.fullmatch() 有何差別?

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

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡