我有两种不同形式的字符串:
https://anexample.com/things/stuff
和
https:///东西/东西
我需要一个正则表达式,它将匹配第三个斜杠之后字符串中的所有内容,无论语法如何。一旦它碰到第三个斜线,字符串的其余部分就会匹配。我找到了一堆例子,但我似乎无法调整正确的方法来让它工作。提前致谢。
你可以用这个
^[^/]*/[^/]*/[^/]*/(.*)$
您可以使用此正则表达式:
^(?:[^\/]*\/){3}(.*)$
并使用匹配组#1
在 JavaScript 中:
var s = 'https:///things/stuff';
m = s.match(/^(?:[^\/]*\/){3}(.*)$/);
// m[1] => things/stuff
假设 PCRE,并且您的字符串中没有换行符:
如果 3 个斜线可以在任何位置(如您的第一个示例):
^[^/]/[^/]*/[^/]*/(.*)$
这也可以表示为
^(:?[^/]*/){3}(.*)$
使用积极的后视,您可以使用以下内容,它应该只匹配您想要的内容,而不是将其放入捕获组:
(?<=^(:?[^/]*/){3}).*$
当然,由于使用分隔符而需要的任何转义都留给读者作为练习(如果您用作分隔符,则必须在表达式/
中转义所有内容,例如)/
\/
可能还有一百万种其他选择,这取决于除了您提到的那些之外,您还有什么确切需求。
像这样的东西应该可以工作,但是我在没有任何测试的情况下编写它,但它应该多次查找任何字符的三个部分,然后是斜线,然后捕获最后一个部分,这就是所有内容,直到行尾 - 你当然可以改变分隔符到空格或其他任何东西。
^.*/{3}(.*$)