Return python 括号内的值

Return the values inside parenthesis in 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")

不幸的是我对正则表达式的了解非常limited.Can有人帮我得到了预期的答案。

通过 .*?,您关闭了正则表达式的 greedy 方面。只需删除问号即可再次启用它(这是默认设置):

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

我认为你可以在这里避免使用正则表达式:

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]

去除字符串两边的一个字符