繁体   English   中英

正则表达式,找到网址的最后一部分

[英]regex, find last part of a url

让我们像这样的网址

www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension

如果我想捕获“ set_of_random_characters_everything_possible.randomextension”, [^/\\n]+$起作用吗? (解决方案来自尝试使用Regex获取URL的最后一部分

我的问题是:“ \\ n”部分是什么意思(即使没有它也可以工作)? 并且,如果url中最随意的字符组合(“ /”除外)是否安全?

首先,请注意, www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension不是在其前面没有http://方案的URL。

其次,不要自己解析URL。 您使用什么语言? 您可能不想使用正则表达式,而是要使用已经编写,测试和调试的现有模块。

如果使用PHP,则需要parse_url函数。

如果使用Perl,则需要URI模块。

看一下这个解释: http : //regex101.com/r/jG2jN7

基本上,这里发生的是“匹配除斜线和换行符之外的任何字符,无穷大到1次”。 人们将\\r\\n插入否定的char类中,因为在某些程序中,否定的字符类将匹配除插入字符类之外的所有内容。 因此,在这种情况下, [^/]将匹配新行。

例如,如果您的文本中有换行符,则换行符后将无法获取数据。

但是,这不适用于您的情况。 您需要为此行为使用s标志(PCRE_DOTALL)

TL; DR:您可以保留它或将其删除,这无关紧要。

询问是否有不清楚的地方,或者我已经解释得有些草率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM