如何优化匹配文件路径的正则表达式,保留原有功能避免误匹配
问题原因分析
原有正则使用的.*为贪婪匹配模式,会从当前行第一个双引号开始尽可能多匹配字符,直到命中后续规则要求的/与后缀规则,因此会把多组双引号包裹的内容合并捕获,导致匹配结果超出预期。
优化后正则
将正则中所有匹配任意字符的.*替换为匹配非双引号的[^"]*,既完全保留原有功能逻辑,又能限制匹配范围不会跨双引号:
("[^"]*\/[^"]*\.[\w:.]+)
如果需要同时捕获路径结尾的双引号,可调整为:
("[^"]*\/[^"]*\.[\w:.]+")
规则匹配验证
该正则完全符合你提出的所有路径匹配规则:
- 匹配内容始终以双引号开头,满足路径起始规则
- 非双引号匹配逻辑支持文件名包含多个后缀、文件夹名称包含后缀的场景
- 末尾的
\.[\w:.]+强制要求路径至少包含一个作为后缀标识的. - 针对测试用例
someFunction("Default","Asset/NiceAssetTab/Lighting/MuchLighting.act"),会正确捕获"Asset/NiceAssetTab/Lighting/MuchLighting.act",不会引入多余内容
内容的提问来源于stack exchange,提问作者Adrien Nivaggioli
相关产品推荐
相关产品推荐

