如何使用正则表达式从字符串中去除[a-z]/[a-z]/?

3

假设有一个字符串是abc/xyz/IMPORTANT/DATA/@#!%@!%,我只想要IMPORTANT/DATA/!%#@%!#%

我很菜,不擅长正则表达式,也还没学过JavaScript API


你想要最后一个斜杠后面的所有内容吗? - Felix Kling
我刚刚回去重新澄清了一下。 - John Nall
@John Nall:嗯,abc/xyz/IMPORTANT/DATA/!%#@%!#%之间有什么区别?abc/xyz/IMPORTANT/DATA/或者abc/MORE/IMPORTANT/DATA/呢?是大小写敏感的吗?如果不是,我认为你想要的是不可能实现的。你必须根据它们的结构以某种方式区分它们的部分。 - Felix Kling
@Felix - 很好的观点。我从标题中假设会有两个小写部分常量。 - Martin Smith
@Martin Smith:确实可能是这样 :) 最好的办法是让楼主澄清一下 ;) - Felix Kling
3个回答

2
使用 indexOfsubstring。无需使用正则表达式。
您可以使用 indexOfstart 参数从给定位置开始搜索。如果您在第一个 / 之后搜索,您可以找到第二个 / 的索引。
s = "abc/def/ghi/jkl";
s = s.substring(s.indexOf('/', s.indexOf('/') + 1) + 1);
document.writeln(s); // "ghi/jkl"

请注意,这假定至少有两个/。如果没有,则会保持s不变。
s = "abc/xyz";
s = s.substring(s.indexOf('/', s.indexOf('/') + 1) + 1);
document.writeln(s); // "abc/xyz"

如果您仍然想使用正则表达式,可以这样做:
```` 如果要使用正则表达式,请按照以下方式进行操作: ````
s = "abc/def/ghi/jkl";
s = s.replace(/[a-z]+\/[a-z]+\//, '');
document.writeln(s); // "ghi/jkl"

再次强调,这假设至少有两个/


1

我认为

yourstring.replace(/[a-z]+\/[a-z]+\/(.+)/g, "$1");

1
如果文本始终如您当前的示例,则可以尝试使用substringindexOf从第二个“/”处开始截取它。
否则,/([^\/]+\/[^\/]+\/)/或Blair的答案可能是一个不错的正则表达式。 如果必须从字符串开头开始,则使用/^([^\/]+\/[^\/]+\/)/

我要研究一下子字符串 IndexOF,听起来是我需要的高性能解决方案。 - John Nall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接