[英]Regular Expression to find brackets in a string
我有一個有多個括號的字符串。 我們說吧
s="(a(vdwvndw){}]"
我想將所有括號提取為單獨的字符串。
我試過這個:
>>> brackets=re.search(r"[(){}[]]+",s)
>>> brackets.group()
但它只給了我最后兩個括號。
'}]'
這是為什么? 它不應該獲取字符集中的任何一個或多個括號嗎?
你必須逃脫第一個關閉方括號。
r'[(){}[\]]+'
要將所有這些組合成一個字符串,您可以搜索任何不匹配的內容並將其刪除。
brackets = re.sub( r'[^(){}[\]]', '', s)
使用以下( 關閉方括號必須在字符類內轉義 ):
brackets=re.search(r"[(){}[\]]+",s)
↑
正則表達式"[(){}[]]+"
(或更確切地說是"[](){}[]+"
或"[(){}[\\]]+"
(正如其他人建議的那樣))找到一個連續字符序列。 您需要做的是找到所有這些序列並加入它們。
一個解決方案是:
brackets = ''.join(re.findall(r"[](){}[]+",s))
還需要注意的是我重新排列字符的順序在一個類中,如]
必須是在類的開始,使之不被解釋為類定義的結束。
你也可以在沒有正則表達式的情況下做到這一點:
s="(a(vdwvndw){}]"
keep = {"(",")","[","]","{","}"}
print("".join([ch for ch in s if ch in keep]))
((){}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.