Regex 正则表达式以匹配特定函数的参数

Regex 正则表达式以匹配特定函数的参数,regex,python-3.x,ply,Regex,Python 3.x,Ply,如何编写正则表达式以匹配以下字符串: 名称(abc1)或编号(param9)或列表获取(12jtxgh) 我只想匹配括号中的字符串,前提是它前面有名称、数字或listget 我试图做到这一点: r'(*?)' 如果我的表情如下所示: (名称(foo)和编号(bar))-listget(baz) 然后它也开始匹配(name,foo)。我希望我的正则表达式只从上面的表达式中提取foo、bar和baz,因为它被附加了name、number和listget 我只能用这种形式写正则表达式。正则表达式括号中

如何编写正则表达式以匹配以下字符串:

名称(abc1)或编号(param9)或列表获取(12jtxgh)

我只想匹配括号中的字符串,前提是它前面有名称、数字或listget

我试图做到这一点: r'(*?)'

如果我的表情如下所示:

(名称(foo)和编号(bar))-listget(baz)

然后它也开始匹配(name,foo)。我希望我的正则表达式只从上面的表达式中提取foo、bar和baz,因为它被附加了name、number和listget


我只能用这种形式写正则表达式。正则表达式括号中的r'regex'

是用于分组的特殊符号。要匹配它们,你必须使用转义字符
\
,就像这样
\(

对于不匹配的符号(如括号):

[^)]
应该使用。不需要转义字符的地方

要查找替代方案,应使用括号中的管道字符
|
。例如:

 (mary|john)

为了在括号内的结果匹配中不捕获组,您应该从
?:

开始,以下正则表达式应该起作用:

(?:listget|name|number)\(([^)]+)\)

您可以通过访问来尝试工作演示。正如其他人指出的,括号必须转义以匹配其文字,否则正则表达式会将其用于不同的目的(如捕获组).

试着像上面说的那样,我不能使用re.findall。我必须在r''之间写任何东西,只在后面加上你的意思是前面加上?对不起,你没有提到不能使用re.findall的要求。当然,你可以在re.finditer中使用它来获得所有匹配项。顺便问一下,你的代码是什么?是的,我的意思抱歉,也请检查编辑。函数名与func1、func2或func3不同。我刚刚给出了一个示例。我的3个函数名是固定的。但是如何检查它是否仅由这3个函数名前缀?你能给出最终的正则表达式吗?你现在应该可以做了,但你自己可以,用我写的信息。粘贴你的示例进入并查看它是如何匹配的。这就是我必须为您做的。实际上,括号不必在括号内转义:9.4.3 ERE特殊字符-“句点、左括号、反斜杠和左括号应是特殊的,除非在括号表达式中使用……”