淺談Python正則表達(dá)式中的groups()
在使用 Python 進(jìn)行文本解析時(shí),正則表達(dá)式(re 模塊)是最常用的工具之一。尤其是在智能體(Agent)開(kāi)發(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 開(kāi)始)。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
我們希望用正則把它拆開(kāi),分別提取出工具名和輸入。
定義正則表達(dá)式:
import re action_re = re.compile(r"^Action: (\w+): (.*)$")
解釋:
^Action:→ 匹配開(kāi)頭的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(),就能夠方便地寫(xiě)出更加簡(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)文章
Python SQLite3數(shù)據(jù)庫(kù)日期與時(shí)間常見(jiàn)函數(shù)用法分析
這篇文章主要介紹了Python SQLite3數(shù)據(jù)庫(kù)日期與時(shí)間常見(jiàn)函數(shù)用法,結(jié)合實(shí)例形式分析了Python連接、查詢SQLite3數(shù)據(jù)以及數(shù)據(jù)庫(kù)日期與時(shí)間常見(jiàn)操作方法,需要的朋友可以參考下2017-08-08
Python并發(fā)concurrent.futures和asyncio實(shí)例
這篇文章主要介紹了Python并發(fā)concurrent.futures和asyncio實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例
在本篇文章里小編給大家整理了關(guān)于Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。2020-02-02
八個(gè)超級(jí)好用的Python自動(dòng)化腳本(小結(jié))
每天你都可能會(huì)執(zhí)行許多重復(fù)的任務(wù),例如閱讀新聞、發(fā)郵件、查看天氣、打開(kāi)書(shū)簽、清理文件夾等等,本文主要介紹了Python自動(dòng)化腳本,具有一定的參考價(jià)值,感興趣的可以了解一下2022-07-07
基于Python+QT的gui程序開(kāi)發(fā)實(shí)現(xiàn)
這篇文章主要介紹了基于Python+QT的gui程序開(kāi)發(fā)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
python中join與os.path.join()函數(shù)實(shí)例詳解
os.path.join()函數(shù)用于路徑拼接文件路徑,下面這篇文章主要給大家介紹了關(guān)于python中join與os.path.join()函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

