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

