我们来一个像
这样的网址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]+$
会有效吗? (解决方案取自Trying to get the last part of a URL with Regex)
我的问题是:“\ n”部分意味着什么(即使没有它也可以工作)?并且,如果网址与“/”之间最偶然的字符组合是否安全?
答案 0 :(得分:2)
首先,请注意www.url.com/some_thing/random_numbers_letters_everything_possible/set_of_random_characters_everything_possible.randomextension
不是没有http://
之类的方案的网址。
其次,不要自己解析URL。你用的是什么语言?您可能不想使用正则表达式,而是使用已经编写,测试和调试的现有模块。
如果您使用的是PHP,则需要parse_url
函数。
如果您使用的是Perl,则需要URI
模块。
答案 1 :(得分:1)
看看这个解释:http://regex101.com/r/jG2jN7
基本上这里发生的事情是“匹配斜线和新线之外的任何角色,无限到1次”。人们将\r\n
插入到否定的char类中,因为在某些程序中,否定的字符类将匹配除插入其中的任何内容之外的任何内容。因此[^/]
会匹配新行。
例如,如果文本中有换行符,则在换行符后不会获得数据。
然而,在您的情况下,情况并非如此。您需要使用s-flag (PCRE_DOTALL)
来解决此问题。
TL; DR:您可以保留或删除它,它不重要。
询问是否有任何不清楚或我已经解释得有点草率。