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

时间:2018-02-06 20:46:55

标签: regex python-3.x ply

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

name(abc1)或number(param9)或listget(12jtxgh)

我想匹配括号中的字符串,只要它是由名称或数字或listget预先添加的。

我试过这个: R '((。*?))'

如果我的表达如下所示:

(name(foo)& number(bar)) - listget(baz)

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

我必须以#r'regex'

这种形式写正则表达式

2 个答案:

答案 0 :(得分:0)

在正则表达式中,括号是用于分组的特殊符号。要匹配它们,您必须使用转义字符\,例如\(

不匹配符号ex。括号:

[^)]
应该使用

。你不需要转义字符的地方。

要找到替代方法,您应该使用括号括起来的管道符|。例如:

 (mary|john)

如果未在括号内的结果匹配中捕捉组,则应以?:

开头

答案 1 :(得分:0)

以下正则表达式应该可以解决这个问题:

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

您可以访问this link尝试一个有效的演示。正如其他人所指出的那样,必须对括号进行转义以匹配它们的文字,否则正则表达式将它们用于不同目的(如捕获组)。