Regex-从字符第N次出现到字符串末尾的匹配

Regex - match from N-th occurence of a character till end of string

本文关键字:字符串 字符 Regex-      更新时间:2023-09-26

这里有点疯狂:)因为这一定很简单,我就是无法破解它。

示例:

HTZ_2015_CS_SS5_cncenter_1020x200_AS2_10K.html
HTZ_2015_CS_SS5_cncenter_1020x200_AS2_10K.swf
HTZ_2015_CS_SS5_cncenter_1500x1000_160K_w1020.jpg
  • 匹配第6个"_"(下划线字符),选择它和后面的所有字符,直到字符串结束
  • 不替换(基本上是从第6个下划线到字符串末尾删除)

我使用Sublime Text进行所有文本编辑,并具有查找/替换功能,但如有必要,我可以使用一些在线工具(有什么建议吗?)。正如你可能已经猜到的,这些是我们经常需要修改的横幅文件名,一次修改数百个。

非常感谢!

附言:我可以写简单的JS,所以如果必须的话,这可能也是一个选项。

^((?:[^_]*_){5}[^_]*).*$

你可以试试这个。替换为$1'1。请参阅演示。

https://regex101.com/r/sJ9gM7/36

如果确定字符串中至少有6个_:

   src.match (/^((?:[^_]*_){5}[^_]*)(_[^]*)$/)[1]

'HTZ_2015_CS_SS5_cncenter_1020x200_AS2_1K.html'.match(/^((?:[^]*){5}[^]*)([^]*)$/)[1]='HTZx2015_CS_SS5_cncenter_1020x200'

否则使用:

  (src.match (/^((?:[^_]*_){5}[^_]*)(_[^]*)$/) || [,src])[1]

我认为您需要一个类似Perl的正则表达式用于Sublime text:

'b(?:[^_]*_){5}[^_]*'K(.*)'b

这是一个演示。

它捕获:

_AS2_10K.html
_AS2_10K.swf
_160K_w1020.jpg