Javascript Regex-从字符第N次出现到字符串结尾的匹配
这里有点疯狂:)因为这一定很简单,我就是无法破解 示例:Javascript Regex-从字符第N次出现到字符串结尾的匹配,javascript,regex,sublimetext2,Javascript,Regex,Sublimetext2,这里有点疯狂:)因为这一定很简单,我就是无法破解 示例: 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个“\”(下划线字符),选择它和后面的所有内容,直到字符串结束 替换为nothing(基本上从第6个下划线删除到字符串末尾) 我使用Subli
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个“\”(下划线字符),选择它和后面的所有内容,直到字符串结束
- 替换为nothing(基本上从第6个下划线删除到字符串末尾)
^((?:[^_]*_){5}[^_]*).*$
您可以尝试此操作。替换为$1
或\1
。请参阅演示
我认为您需要一个类似Perl的正则表达式来生成崇高的文本:
\b(?:[^_]*_){5}[^_]*\K(.*)\b
这是一本书
它包括:
_AS2_10K.html
_AS2_10K.swf
_160K_w1020.jpg
如果您确定字符串中至少有6个字符:
src.match (/^((?:[^_]*_){5}[^_]*)(_[^]*)$/)[1]
“HTZ_2015_CS_SS5_cncenter_1020x200_AS2_10K.html”。匹配(/^((?:[^]*){5}[^]*)([^]*)$/)[1]=“HTZ_2015_CS_SS5_cncenter_1020x200”
否则,请使用:
(src.match (/^((?:[^_]*_){5}[^_]*)(_[^]*)$/) || [,src])[1]
嘿,谢谢你的回复,但是-我需要选择第6条下划线和后面的所有内容。这一个选择第7个(最后一个)下划线之后的所有内容,并去掉下划线。这一个更好:),但仍然不能捕获第6个下划线。选择在下划线之后开始。(在SUblime中不起作用)啊哈,对不起,我在SUblime中试过了,但没用@regex101它可以工作。谢谢@Alex Starbuck您是否使用
m
多行
flagTx作为答案!“src.match”…然后是“| |[,src][1]”这部分是什么?我正在使用Regex101测试仪并在那里进行替换。完成后,我将值从“替换”面板复制到我的txt文件中。src.match
如果匹配成功,则返回数组;如果不匹配,则返回null,|[,src]
将在不匹配的情况下调用,并返回一个数组,其中元素1是原始字符串。因此,如果不匹配,整个JavaScript表达式将有效地进行替换或不执行任何操作。Regex101将不允许您对此进行测试。我将对此进行修改。