[英]Regex to match strings within braces
我正在嘗試將正則表達式寫入具有以下格式的字符串
12740(34,12)[abc(a1b2c3)(a2b3c4)......] myId123
目前,我有這樣的事情
\((?P<expression>\S+)\)
但是有了這個,我只能捕獲方括號內的字符串。
無論如何,我可以捕獲方括號之前的整數,以及結尾處的id以及方括號內的字符串。
小括號中包含的字符串數將不同。 我也可以有一個像這樣的字符串
10(3,2)[abc(a1b2c3)] myId1
我知道我可以使用蠻力為上述表達式編寫一個簡單的正則表達式。 但是當方括號內的字符串數不斷變化時,有人可以幫我寫一個嗎。
提前致謝
您可以使用^
和$
捕獲信息,分別表示開始和結束:
((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)
Regex101:
https://regex101.com/r/PoA5k4/1
為了使結果更有用,我將其變成字典:
import re
myStr = "12740(34,12) [abc (a1b2c3) (a2b3c4)......] myId123"
di = {}
for find in re.findall("((?P<front>^\d+)|\((?P<expression>\S+)\)|(?P<id>[a-zA-Z0-9]+)$)",myStr):
if find[1] != "":
di["starter"] = find[1]
elif find[3] != "":
di["id"] = find[3]
else:
di.setdefault("expression",[]).append(find[2])
print(di)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.