簡體   English   中英

正則表達式以匹配花括號中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM