使用正则表达式匹配具有两个或多个参数的函数

问题描述 投票:0回答:1

我想在Python中编写一个正则表达式来匹配具有两个或多个参数的函数,以便以下表达式匹配:

function(1, 2, 3)
function(1, 2, 3, 4)
function(1, function(1, 2), 3)
function(function(function(1, 2), 2), 2, 3, 4)

但以下情况则不然:

function(1, 2)
function(1, function(1, function(1, 2)))
function(1, function(function(1), 2))

我最好的尝试是以下表达式,它仅适用于没有嵌套函数的情况:

\w+\((?:.*,){2,}.*\)

我应该用什么表达方式来代替?

python regex pcre parentheses
1个回答
-1
投票
pattern = r'\w+\(((?:[^()]|\((?:[^()]|(?2))*\))*,){2,}[^()]*\)'

你可以这样使用它:

text = "function(1, 2, 3) function(1, 2, 3, 4) function(1, function(1, 2), 3) function(function(function(1, 2), 2), 2, 3, 4) function(1, 2) function(1, function(1, function(1, 2))) function(1, function(function(1), 2))"

matches = re.findall(pattern, text)

for match in matches:
    print(match)
© www.soinside.com 2019 - 2024. All rights reserved.