繁体   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