我有一些字符串数据需要搜索才能找到特定的数字:
下面是一个示例字符串/缓冲区:
Conference 11-2222-a.b.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound) 176;014802813@mydomain;0182e4e4-193b-4d63-9bef-b597f0655c83;jdo ;014802813;hear|speak|talking|floor;0;0;0;0
Conference 10-1234.c.fdf.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound)175;.net/4122@mydomain;77c1f301-85e1-4275-9c539e5927b87d6;4122;hear|speak|talking|floor;0;0;0;0
我需要做的是搜索这个输出和"会议10-"后面的4位数字。在这种情况下,我要找的是1234。
**我尝试过的**
我已经尝试了以下所有模式。。。它们都没有给我所需要的:
print(string.match(input, "10-%d%d%d%d-"));
print(string.match(input, "Conference 10-%d%d%d%d-"));
print(string.match(input, "Conference 10-(%d)-");
print(string.match(input, "Conference 10(-)(%d));
您需要用%
转义连字符,因为未转义的-
在Lua中是一个惰性量词(-
也有0个或更多重复)。
str = "Conference 11-2222-a.b.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound) 176;014802813@mydomain;0182e4e4-193b-4d63-9bef-b597f0655c83;jdo ;014802813;hear|speak|talking|floor;0;0;0;0nnConference 10-1234.c.fdf.c (1 member rate: 32000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound)175;.net/4122@mydomain;77c1f301-85e1-4275-9c539e5927b87d6;4122;hear|speak|talking|floor;0;0;0;0"
print(string.match(str, 'Conference 10%-(%d%d%d%d)') )
^
这将打印1234
。
Lua20.2–模式参考:
一些被称为魔术字符的字符在图案中使用时具有特殊含义。神奇的角色是
( ) . % + - * ? [ ^ $
角色
%
充当了这些魔法角色的逃生通道。
使用gsub()
:
print(string.gsub(".*Conference 10%-(%d%d%d%d)%-.*", "%1"));