re.search()用法詳解

JJJhr發表於2024-05-19

re.search() 是 Python 的正規表示式庫 re 中的一個方法,用於在字串中搜尋與正規表示式模式匹配的第一個位置,並返回一個匹配物件。如果沒有找到匹配項,則返回 None

以下是 re.search() 的基本用法和詳解:

基本語法

import re  
  
match = re.search(pattern, string, flags=0)
  • pattern:要匹配的正規表示式模式。
  • string:要在其中搜尋的字串。
  • flags:可選引數,用於控制正規表示式的匹配方式。常見的標誌有 re.IGNORECASE(忽略大小寫)、re.MULTILINE(多行匹配)等。

返回值

  • 如果找到匹配項,re.search() 返回一個匹配物件,該物件包含有關匹配的資訊,如匹配的位置、匹配的文字等。
  • 如果沒有找到匹配項,返回 None

示例

import re  
  
# 示例 1: 查詢字串中的數字  
string = "Hello, I have 123 apples and 456 oranges."  
match = re.search(r'\d+', string)  
if match:  
    print("Found a number:", match.group())  # 輸出: Found a number: 123  
  
# 示例 2: 查詢忽略大小寫的匹配項  
string = "Hello, World! hello, python."  
match = re.search(r'hello', string, re.IGNORECASE)  
if match:  
    print("Found a match:", match.group())  # 輸出: Found a match: Hello  
  
# 示例 3: 如果沒有找到匹配項  
string = "No match here."  
match = re.search(r'\d+', string)  
if match:  
    print("Found a number")  
else:  
    print("No number found")  # 輸出: No number found

匹配物件的方法

如果 re.search() 找到了匹配項並返回了一個匹配物件,你可以使用該物件的以下方法:

  • group(): 返回匹配的文字。
  • groups(): 返回一個包含所有分組匹配的元組(如果正規表示式中有分組的話)。
  • start(): 返回匹配的起始位置。
  • end(): 返回匹配的結束位置(不包含該位置的字元)。
  • span(): 返回一個包含匹配起始和結束位置的元組。

注意

  • re.match() 不同,re.search() 會在整個字串中搜尋匹配項,而不僅僅是字串的開頭。
  • 如果你需要獲取字串中所有匹配項的列表,可以使用 re.findall() 方法。