Python正则表达式查找分隔符内的字符

2024-05-15 11:04:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 方法字符串标记importregrouppythonic字符
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)

使用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)']

相关问题 更多 >