2

这是一个来自 mediawiki 的正则表达式,一个开源的 wiki 解决方案。

/\[((http\:\/\/|https\:\/\/|ftp\:\/\/|irc\:\/\/|ircs\:\/\/|gopher\:\/\/|telnet\:\/\/|nntp\:\/\/|worldwind\:\/\/|mailto\:|news\:|svn\:\/\/|git\:\/\/|mms\:\/\/|\/\/)[^][<>"\x00-\x20\x7F\p{Zs}]+)\p{Zs}*([^\]\x00-\x08\x0a-\x1F]*?)\]/Su

对我来说,它似乎与 uri 匹配,但我无法让它匹配任何东西。我无法理解正则表达式的最后一部分,即。

[^][<>"\x00-\x20\x7F\p{Zs}]+)\p{Zs}*([^\]\x00-\x08\x0a-\x1F]*?)\]

这到底是做什么的?

非常感谢任何有关解码的帮助。

4

2 回答 2

4

此正则表达式匹配外部链接,如

[http://www.stackoverflow.com]
[https://www.stackoverflow.com StackOverflow]
[ftp://ftp.mozilla.org Mozilla]
于 2012-04-12T07:53:47.587 回答
3

[^][<>"\x00-\x20\x7F\p{Zs}]
是匹配任何字符的否定字符类,但:][<>"、ASCII 字符范围\x00-\x20、ASCII 字符\x7F和空格(p{Zs}是匹配任何类型的空格字符的Unicode 字符属性)

\p{Zs}*匹配任何类型的空格字符 0 次或更多次

[^\]\x00-\x08\x0a-\x1F]
是一个否定字符类,它匹配除]、ASCII 字符范围\x00-\x08\x0a-\x1F

于 2012-04-12T08:15:04.830 回答