【发布时间】:2015-08-26 06:49:38
【问题描述】:
我有一个包含多个括号的字符串。让我们说
s="(a(vdwvndw){}]"
我想将所有括号提取为单独的字符串。
我试过这个:
>>> brackets=re.search(r"[(){}[]]+",s)
>>> brackets.group()
但它只给了我最后两个括号。
'}]'
这是为什么呢?它不应该获取字符集中的一个或多个括号吗?
【问题讨论】:
-
见
re.findallstackoverflow.com/questions/7724993/… -
regex101.com 是构建和测试正则表达式的好工具。
-
请注意,
re.search只会产生第一个匹配项。 -
哦。当我找到所有时,它会给我一个匹配列表,然后我可以加入。搜索和匹配只给出第一个匹配是不是?它不会进一步检查其他匹配项吗?那为什么呢?我只使用了“+”,以便它可以检查一个或多个。
-
+表示连续 1 个或多个匹配字符。如果匹配字符组之间有不匹配的字符,re.search只查找第一个组,而re.match只查找第一个组,然后只查找它在字符串开头的位置。