在Lua中,如何从长字符串中解析出一个http(s)字符串?

时间:2013-08-19 06:08:53

标签: string lua string-parsing

如果我有一个字符串,例如

  

这是一个网站,它在   http://www.abc.com/post_id?id=123&key=456,请访问它并告诉我   知道。感谢

如何在Lua中解析这个字符串,这样我就可以获得三个子字符串:

字符串1 - http(s)url之前的文本

字符串2 - http(s)url本身(包含所有参数)

字符串3 - http(s)url后面的文本

请注意“http”之前可能没有空格。感谢。

1 个答案:

答案 0 :(得分:3)

最简单的模式是:(.+)%s+(https?%S+)%s+(.*)$

local str = "This is a website, it is at http://www.abc.com/post_id?id=123&key=456, please visit it and let me know. Thanks"
local sPre, sLink, sPost = str:match( "(.+)%s+(https?%S+)%s+(.*)$" )

它会给你:https://eval.in/43745

缺点是,您将获得包含,字符的网址。


使用(https?%S+)的中间部分可以控制您的网址参数。如果您认为字符串中可以包含单词http,请将其修改为:(https?://%S+)以及类似的其他可能性。