Skip to main content
 首页 » 编程设计

Python正则表达式查找定界符内的字符

2024年08月23日33zengkefu

我有一个更具挑战性的任务,但我首先面临这个问题。给定一个字符串 s,我想提取所有由一些分隔符标记的字符组,例如括号。我如何使用正则表达式(或任何 Pythonic 方式)完成此操作?

import re 
 
>>> s = '(3,1)-[(7,2),1,(a,b)]-8a' 
>>> pattern = r'(\(.+\))' 
>>> re.findall(pattern, s).group()            # EDITED: findall vs. search 
['(3,1)-[(7,2),1,(a,b)'] 
 
# Desire result 
['(3,1)', '(7,2)', '(a,b)'] 

请您参考如下方法:

使用 findall() 而不是 search()。前者找到所有出现的地方,后者只找到第一个。

使用非贪婪的 ? 运算符。否则,您将找到从第一个 () 开始到最后一个 ) 结束的匹配项。

请注意,正则表达式不是查找嵌套表达式的好工具,例如:((1,2),(3,4))。

import re 
s = '(3,1)-[(7,2),1,(a,b)]-8a' 
pattern = r'(\(.+?\))' 
print re.findall(pattern, s)