如何使用正则表达式提取字符串最后一个_与第一个.之间的内容
正则表达式实现需求的方案
方案1:分两步处理(和你现有逻辑衔接)
你已经可以通过正则(.*)\.[^\.]*$捕获去掉后缀的文件名主体,接下来要删除最后一个_之前的所有内容,直接用匹配规则^.*_将匹配到的内容替换为空即可。
- 匹配逻辑说明:
^匹配字符串开头,.*是贪婪匹配,会尽可能多的匹配字符直到遇到最后一个_,替换为空后剩下的就是最后一个_到字符串末尾的内容。 - 示例:处理第一步得到的
example_photo_name1,用^.*_替换为空后直接得到name1。
方案2:一步到位捕获目标内容
也可以直接写正则一次性提取目标内容,不需要分两次替换,正则表达式如下:^.*_([^.]+)\..*$
你只需要提取第一个捕获组(也就是括号内匹配的内容)即可得到目标结果。
- 匹配逻辑说明:
^.*_:匹配从字符串开头到最后一个_的所有内容([^.]+):捕获所有不包含.的连续字符,也就是你需要的name1/name2部分\..*$:匹配从第一个.到字符串末尾的后缀内容
内容的提问来源于stack exchange,提问作者StaticName
相关产品推荐
相关产品推荐

