淺談Python正則表達式中的groups()
在使用 Python 進行文本解析時,正則表達式(re 模塊)是最常用的工具之一。尤其是在智能體(Agent)開發(fā)、日志分析、命令解析等場景中,我們常常需要通過正則捕獲一段字符串的不同部分。
其中,Match 對象的 groups() 方法 是一個非常實用的接口,可以一次性獲取所有括號捕獲到的內(nèi)容。本文將通過一個具體示例,講解 groups() 的作用與用法。
1. 基礎概念
在 Python 的 re 模塊中:
group(n):返回第n個括號捕獲的內(nèi)容(n從 1 開始)。groups():返回一個 元組(tuple),里面包含了所有括號捕獲的結果。
例如:
import re
pattern = re.compile(r"(\d+)-(\d+)")
m = pattern.match("123-456")
print(m.group(1)) # 123
print(m.group(2)) # 456
print(m.groups()) # ('123', '456')
這里 ( \d+ ) 和 ( \d+ ) 分別捕獲了 "123" 和 "456",groups() 會把它們打包成 ('123', '456')。
2. 實際應用場景:解析智能體的動作指令
假設我們在實現(xiàn)一個 ReAct 風格的智能體,大模型會輸出類似這樣的內(nèi)容:
Action: wikipedia: India
這里包含三個部分:
- 固定前綴:
Action: - 工具名:
wikipedia - 工具輸入:
India
我們希望用正則把它拆開,分別提取出工具名和輸入。
定義正則表達式:
import re action_re = re.compile(r"^Action: (\w+): (.*)$")
解釋:
^Action:→ 匹配開頭的Action:(\w+)→ 第 1 個捕獲組,提取工具名(字母、數(shù)字、下劃線):→ 固定的冒號(.*)→ 第 2 個捕獲組,提取工具輸入(任意字符)$→ 行尾
3. 匹配與groups()輸出
text = "Action: wikipedia: India"
m = action_re.match(text)
print("完整匹配:", m.group(0)) # Action: wikipedia: India
print("group(1):", m.group(1)) # wikipedia
print("group(2):", m.group(2)) # India
print("groups():", m.groups()) # ('wikipedia', 'India')
輸出結果:
完整匹配: Action: wikipedia: India
group(1): wikipedia
group(2): India
groups(): ('wikipedia', 'India')
在實際代碼中,可以直接用 解構賦值:
action, action_input = m.groups() print(action) # wikipedia print(action_input) # India
4. 直觀圖解
匹配過程可以用下圖表示:
Action: wikipedia: India
|-------| |----|
group(1) group(2)
- group(1) = "wikipedia"
- group(2) = "India"
- groups() = ("wikipedia", "India")
5. 總結
- group(n):獲取第 n 個括號捕獲內(nèi)容。
- groups():一次性返回所有捕獲組結果,打包成元組。
- 在智能體應用中,groups() 非常適合解析大模型輸出的 Action 指令,可以快速拆分出 工具名 和 輸入?yún)?shù),方便后續(xù)調(diào)用對應的工具函數(shù)。
掌握 groups(),就能夠方便地寫出更加簡潔、清晰的解析邏輯,從而為構建智能體、命令解析器、日志處理程序打下堅實的基礎。
到此這篇關于淺談Python正則表達式中的groups()的文章就介紹到這了,更多相關Python groups()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Ubuntu配置Pytorch on Graph (PoG)環(huán)境過程圖解
這篇文章主要介紹了Ubuntu配置Pytorch on Graph (PoG)環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11
Python數(shù)據(jù)處理之JSON數(shù)據(jù)轉換和處理詳解
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)一個專業(yè)的JSON數(shù)據(jù)處理和轉換工具,專門用于處理驗證和轉換JSON格式的數(shù)據(jù),有需要的可以了解下2025-12-12
使用Python實現(xiàn)MapReduce的示例代碼
MapReduce是一個用于大規(guī)模數(shù)據(jù)處理的分布式計算模型,最初由Google工程師設計并實現(xiàn)的,Google已經(jīng)將完整的MapReduce論文公開發(fā)布了,本文給大家介紹了使用Python實現(xiàn)MapReduce的示例代碼,需要的朋友可以參考下2024-05-05
Python使用文件操作實現(xiàn)一個XX信息管理系統(tǒng)的示例
這篇文章主要介紹了Python使用文件操作實現(xiàn)一個XX信息管理系統(tǒng)的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Eclipse和PyDev搭建完美Python開發(fā)環(huán)境教程(Windows篇)
這篇文章主要介紹了Eclipse和PyDev搭建完美Python開發(fā)環(huán)境教程(Windows篇),具有一定的參考價值,感興趣的小伙伴可以了解一下。2016-11-11

