-5

我有两种不同形式的字符串:

https://anexample.com/things/stuff

https:///东西/东西

我需要一个正则表达式,它将匹配第三个斜杠之后字符串中的所有内容,无论语法如何。一旦它碰到第三个斜线,字符串的其余部分就会匹配。我找到了一堆例子,但我似乎无法调整正确的方法来让它工作。提前致谢。

4

4 回答 4

2

你可以用这个

^[^/]*/[^/]*/[^/]*/(.*)$

正则表达式可视化

于 2013-10-01T14:41:46.113 回答
1

您可以使用此正则表达式:

^(?:[^\/]*\/){3}(.*)$

并使用匹配组#1

在 JavaScript 中:

var s = 'https:///things/stuff';
m = s.match(/^(?:[^\/]*\/){3}(.*)$/);
// m[1] => things/stuff
于 2013-10-01T14:42:32.653 回答
1

假设 PCRE,并且您的字符串中没有换行符:

如果 3 个斜线可以在任何位置(如您的第一个示例):

^[^/]/[^/]*/[^/]*/(.*)$

这也可以表示为

^(:?[^/]*/){3}(.*)$

使用积极的后视,您可以使用以下内容,它应该只匹配您想要的内容,而不是将其放入捕获组:

(?<=^(:?[^/]*/){3}).*$

当然,由于使用分隔符而需要的任何转义都留给读者作为练习(如果您用作分隔符,则必须在表达式/中转义所有内容,例如)/\/

可能还有一百万种其他选择,这取决于除了您提到的那些之外,您还有什么确切需求。

于 2013-10-01T14:42:48.340 回答
0

像这样的东西应该可以工作,但是我在没有任何测试的情况下编写它,但它应该多次查找任何字符的三个部分,然后是斜线,然后捕获最后一个部分,这就是所有内容,直到行尾 - 你当然可以改变分隔符到空格或其他任何东西。

^.*/{3}(.*$)
于 2013-10-01T14:42:33.837 回答