我尝试解析一个带有http URL的字符串,例如,字符串就像
str = "http://www.abc.com?id=123&key=456 and more text here"
我想知道http url链接在哪里结束,基本上我用
string.find(str, "......")
我可以在那里放置什么模式,以便它考虑 URL 结束?
我尝试解析一个带有http URL的字符串,例如,字符串就像
str = "http://www.abc.com?id=123&key=456 and more text here"
我想知道http url链接在哪里结束,基本上我用
string.find(str, "......")
我可以在那里放置什么模式,以便它考虑 URL 结束?
匹配 url 的一个简单模式是:
pattern = "https?://[%w-_%.%?%.:/%+=&]+"
string.find(str, pattern)
这只是一个需要改进才能在所有情况下工作的起点 - 如何在其他语言的字符串中查找 URL 的问题是一个很好的提示(例如,在字符串中查找 URL 的正则表达式) . http://www.lua.org/pil/20.2.html也很有用。
另请注意,url 中允许使用括号,例如: http: //msdn.microsoft.com/en-us/library/aa752574 (VS.85).aspx 。
我想知道http url链接在哪里结束
它在空格处结束,所以只需找到所有不是空格的内容:
str:find('%S+')
仅供参考,如果您只是想提取字符串的那部分,您应该match
改用:
str:match('%S+')
编辑:根据下面的讨论添加说明。
请注意,我们不是在此处尝试解析 URL。我们正在解析以空格分隔的字符串中的标记。
我们必须假设 URL 不包含未编码的空格,否则 URL 可能是以下任何一种,我们无法区分它们:
http://www.abc.com?id=123&key=456
http://www.abc.com?id=123&key=456 and
http://www.abc.com?id=123&key=456 and more
http://www.abc.com?id=123&key=456 and more text
http://www.abc.com?id=123&key=456 and more text here
同样,URL 存在于单词由空格分隔的句子中,因此我们必须假设/要求 URL 不包含未编码的空格,这样可以很容易地找到它的结尾。