簡體   English   中英

正則表達式在字符串中查找括號

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

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