首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lua -从任何URL格式提取IP地址

Lua -从任何URL格式提取IP地址
EN

Stack Overflow用户
提问于 2021-12-28 12:07:36
回答 2查看 232关注 0票数 1

是否有一个string:match选项(或alternative Lua命令)可以确保无论提供的URL/IP地址格式如何,我都可以提取IP地址部分?

这是我到目前为止得到的最远的地址,但它没有显示完整的IP地址。

代码语言:javascript
运行
复制
local s1 = "192.168.19.55"
local s2 = "http://192.168.19.55"
local s3 = "http://192.168.219.55:88"
local s4 = "http://192.168.19.55:88/index.html"
local s5 = "https://192.168.119.102/hello.php"
local s6 = "http://admin:password@192.168.19.55:88/hello.php"

local ip = s6:match(".+(%d+%.%d+%.%d+%.%d+)")
print(ip)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-28 12:27:22

您的例子已经起了很大作用,您只是不需要使用来自IP前面的额外符号的领导.+

代码语言:javascript
运行
复制
local ip = s6:match("(%d+%.%d+%.%d+%.%d+)")

尽管如此,这个模式是相当松散的,并将匹配许多其他组的4个数字分开的点。您可能希望至少将每个数字组限制为3位。根据您正在编写的脚本的重要性来决定您是否需要更健壮的模式,以及人们是否会试图通过向它扔坏数据来利用它。

票数 2
EN

Stack Overflow用户

发布于 2021-12-28 15:10:31

当您使用ip‘构造一个表时,您可以遍历它。

示例(在:https://www.lua.org/cgi-bin/demo中测试)

代码语言:javascript
运行
复制
local ips = {"192.168.19.55",
"http://192.168.19.55",
"http://192.168.219.55:88",
"http://192.168.19.55:88/index.html",
"https://192.168.119.102/hello.php",
"http://admin:password@192.168.19.55:88/hello.php"}

for k, v in pairs(ips) do
  print(k, v:match("(.-%d+%.%d+%.%d+%.%d+%:-%d+)"))
end

...that拿出..。

代码语言:javascript
运行
复制
1   192.168.19.55
2   http://192.168.19.55
3   http://192.168.219.55:88
4   http://192.168.19.55:88
5   https://192.168.119.102
6   http://admin:password@192.168.19.55:88

模式项.-%:-%d+意味着:“单个字符类后面跟着'-',这也匹配类中的零个或多个字符的序列。”

来源:https://www.lua.org/manual/5.4/manual.html#6.4.1

玩模式项目,也用更多的文字在网址前测试它。

比如..。

代码语言:javascript
运行
复制
local ips = {"GET 192.168.19.55",
"GET http://192.168.19.55",
"GET http://192.168.219.55:88",
"GET http://192.168.19.55:88/index.html",
"POST https://192.168.119.102/hello.php",
"POST http://admin:password@192.168.19.55:88/hello.php"}

for _, v in pairs(ips) do
  print(v:match("(%g-%d+%.%d+%.%d+%.%d+%:-%d+)"))
end

(%g =Lua5.3及以上- %w =Lua5.1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70506850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档