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