我有2个字符串:
$ip = [{"ip":"127.0.0.1"}]
$port = [{"port":"80"}]
我希望第一个只保留$ip = 127.0.0.1
,第二个保留$port = 80
。我该如何处理正则表达式?
////////// UPDATE //////////
我这样做并且有效,但写得不好:
ip = string.match(respIp.body, "%:(.*)");
ip = string.match(ip, "(.*)%}");
ip = string.sub(ip, 2, string.len(ip)-1);
port = string.match(respPort.body, "%:(.*)");
port = string.match(port, "(.*)%}");
port = string.sub(port, 2, string.len(port)-1);
答案 0 :(得分:1)
您可以使用/([$]ip =).+(?<=:")([\d.]+)/g
然后获取第1组和第2组
但是如果你想获得另一个角色并删除它们,请使用(?:([\[\]\{\}\":]+)|(ip")|(port")|\s{2,})
答案 1 :(得分:0)
ip - 匹配任何ip4格式的字符串, port - 匹配双引号之间的任何十进制字符
local bodyIp = '$ip = [{"ip":"127.0.0.1"}] '
local bodyPort = '$port = [{"port":"80"}] '
local ip = bodyIp:match('(%d+%.%d+%.%d+%.%d+)') -- any ip
local port = bodyPort:match(':"(%d+)"') --
print(ip,port)