无法使用带有python的re.findall()提取正确的内容

时间:2018-04-20 05:09:13

标签: python regex findall

我使用的是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)

我已经使用了非贪婪的限定符?。为什么在没有停在第二个,的情况下它仍然是最长的模式。

1 个答案:

答案 0 :(得分:2)

问题是,.+正在填写第一个逗号,您应该将其更改为.+?,或者更好,[^,]+