首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白的正则表达式

我不明白的正则表达式
EN

Stack Overflow用户
提问于 2011-04-16 01:09:13
回答 1查看 348关注 0票数 9

我关注的是来自luadoc的这几行(稍微修改过的)代码,它们显然是在构建一个带有完整路径的文件名。但是我就是不明白第5行发生了什么。参数filename可能类似于"myfile.lua“。

代码语言:javascript
复制
function out_file (filename)
  local h = filename
  h = string.gsub(h, "lua$", "tex")
  h = string.gsub(h, "luadoc$", "tex")
  h = options.output_dir .. string.gsub (h, "^.-([%w_]+%.tex)$", "%1")
  return h
end

第5行发生了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-16 01:27:45

代码语言:javascript
复制
h = options.output_dir .. string.gsub (h, "^.-([%w_]+%.tex)$", "%1")

该模式匹配以零个或多个非字母数字字符(即空格等)开头的任何字符串。后跟一个或多个字母数字字符和下划线(可能是文件名)、句点和字符串"tex“,然后结束。它捕获文件名+ ".tex“以供以后使用。基本上,它采用一个文件名开头可能包含垃圾字符(空格),并将其替换为干净的版本,然后将输出目录添加到文件名前面。

现在可能会让您感到困惑的是,.可以匹配任何字符。但是当被终止的-修改时,这意味着“在下一次匹配之前由零个或多个字符组成的最短字符串”--即非贪婪搜索。它将匹配从字符串开头找到的任何字符,直到找到与复合[%w_] -字母数字或下划线匹配的字符。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5680105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档