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

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

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

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

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

字符串2- http(s)网址本身(带有所有参数)

字符串3- http(s)网址之后的文本

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

点赞
用户1190388
用户1190388

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

local str = "这是一个网站,它在 http://www.abc.com/post_id?id=123&key=456,欢迎访问并告诉我。谢谢"
local sPre, sLink, sPost = str:match( "(.+)%s+(https?%S+)%s+(.*)$" )

它将给您:https://eval.in/43745

缺点是,您将得到包含“,”字符的URL。


拥有(https?%S+)的中间部分是您可以控制URL参数的位置。 如果您认为字符串中可能有单词http,请将其修改为:(https?://%S+)等等。

2013-08-19 06:33:25