如何使用Regex从字符串末尾匹配文件名、行号及列号信息
你可以使用如下正则实现需求:
(?:.*[\\/])?([^\\/:]+):(\d+):(\d+)
捕获组说明
- 第1组:匹配到的纯文件名(不含路径前缀)
- 第2组:行号
- 第3组:列号
逻辑解释
(?:.*[\\/])?为非捕获可选分组,贪婪匹配所有字符直到最后一个路径分隔符(支持Windows的\和类Unix的/),没有路径前缀时该分组自动忽略([^\\/:]+)捕获所有不包含路径分隔符和冒号的字符,即为纯文件名- 后续两个
(\d+)分别捕获冒号分隔的行号、列号
验证效果
- 针对输入
\path1\path2\a_file.ts:17:9,捕获结果为:- 组1:
a_file.ts - 组2:
17 - 组3:
9
- 组1:
- 针对输入
(at somewhere: \path1\path2\a_file.ts:17:9 something),捕获结果和上面完全一致,前后冗余字符不会影响匹配结果。
内容的提问来源于stack exchange,提问作者user3133
相关产品推荐
相关产品推荐

