Python正则表达式在分隔符中查找字符

时间:2015-11-18 21:30:02

标签: python regex

我有一项更具挑战性的任务,但首先我遇到了这个问题。给定一个字符串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)']

2 个答案:

答案 0 :(得分:2)

使用findall()代替search()。前者发现所有出现,后者只找到第一个出现。

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

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

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

答案 1 :(得分:1)

使用 re.findall()

import re
data = '(3,1)-[(7,2),1,(a,b)]-8a'
found = re.findall('(\(\w,\w\))', data)
print found

输出:

['(3,1)', '(7,2)', '(a,b)']