如何编写正则表达式匹配开头为特殊字符或空格、结尾为.qvd/.txt/.xlsx的字符串
正则修改方案
修改后可直接使用的正则表达式如下:(?<=^|[\s\W])\w+\.(?:txt|qvd|xlsx)
具体修改逻辑
- 新增零宽正向后顾断言
(?<=^|[\s\W]):限定目标内容的前置条件为字符串开头、空格或任意非单词特殊字符,符合要求的匹配规则,同时不会将前缀的特殊字符、空格纳入最终匹配结果 - 将原表达式末尾固定的
txt替换为多选分支非捕获组(?:txt|qvd|xlsx),同时支持三种后缀的匹配 - 删除原表达式中冗余的
.+写法,仅保留单个\.匹配后缀前的点号,避免匹配到包含多个点号的非法文件名
匹配效果验证
针对给出的示例输入字符串 "list.xlsx random %ford.txt #catch.qvd cars roads",上述正则可精准提取到需要的三个结果:
list.xlsxford.txtcatch.qvd
扩展适配
如果文件名主体包含连字符-等合法特殊字符,可将表达式中的\w+替换为[\w-]+,适配更多文件名场景。
内容的提问来源于stack exchange,提问作者BBB
相关产品推荐
相关产品推荐

