我不懂的正则表达式

问题描述

| 我将主攻luadoc中的这几行(略作修改)的行,这些行显然正在构建具有完整路径的文件名。但是我根本不明白第5行会发生什么。 参数“ 0”可能类似于\“ myfile.lua \”。
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行会发生什么?     

解决方法

h = options.output_dir .. string.gsub (h,\"^.-([%w_]+%.tex)$\",\"%1\")
该模式匹配任何以零个或多个非字母数字字符(例如,空格等)开头的字符串,然后是一个或多个字母数字字符和下划线(可能是文件名),句点和随后以“ \ tex \”结尾的字符串。它捕获文件名+ \“。tex \”供以后使用。基本上,它的文件名开头带有可能的垃圾字符(空格),然后将其替换为纯净版本,然后再将输出目录添加到文件开头。 现在,可能引起您困惑的是ѭ3匹配任何字符。但是,当以“ 4”结尾修饰时,则表示\“下一个匹配项之前的零个或多个字符的最短字符串\”-即非贪婪搜索。从字符串开头找到的所有字符都将匹配,直到找到与化合物“ 5”匹配的内容-字母数字或下划线。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...