我使用的是Python 2,我有一个字符串
c = """
if ( is.data.frame(by) && ncol(by)>1 ) { by_by = sapply( by, paste.me, collapse, split) }
ldat = sapply(xdat, by_by )
out = data.table::rbindlist( lapply(ldat, FUN, ...) )
return(out)
"""
我想在sapply()或lapply()中提取第二个参数,因此期望获得['paste.me','by_by','FUN']
。不幸的是,我使用以下代码获得['split', 'by_by', '...']
。
re.findall(r"\b[sl]apply\(.+,\s*([\w._]+?)[,\s)]", c)
我已经使用了非贪婪的限定符?
。为什么在没有停在第二个,
的情况下它仍然是最长的模式。
答案 0 :(得分:2)
问题是,.+
正在填写第一个逗号,您应该将其更改为.+?
,或者更好,[^,]+