返回python中圆括号内的值
我试图提取括号内的下面一行的值。返回python中圆括号内的值
line=(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))
预期的答案是:
panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)
,但使用以下
pattern=re.compile(r'\((.*?)\)')
match = re.search(pattern, line)
我只收到以下输出。
(panel, wxID_EXIT, wxT("Quit")
不幸的是,我对正则表达式的了解非常有限。可以有人帮助我得到预期的答案。
与那.*?
,你关掉贪婪方面的正则表达式。只是删除问号再次启用它(默认):
pattern=re.compile(r'\((.*)\)')
全面测试:
import re
line='(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))'
pattern=re.compile(r'\((.*)\)')
match = re.search(pattern, line)
print(match.group(1)=='panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)')
True
检查我的编辑。这个正则表达式给出了你要求的结果。 –
是啊...非常感谢:D –
我认为你能避免正则表达式在这里:
text = '''line=(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))'''
parts = text.split("=")
result = parts[1][1:-1]
它的工作。谢谢 :) –
你可以做:
>>> line='(panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20))'
>>> re.search(r'^\s*\((.*)\)\s*$', line).group(1)
'panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)'
或者,直Python中,你可以这样做:
>>> line.strip()[1:-1]
'panel, wxID_EXIT, wxT("Quit"),wxPoint(20, 20)'
其中第一条与.strip()
空白字符,然后修剪的一个字符的字符串的两侧与[1:-1]
那么你明确要求去只对第一个')'。如果你真的不想要,为什么要加上'?'? –