如何在特定的字符处开始并在特定的字符处结束字符串?(Lua)

以下是我的问题。 我正在使用Lua,我有一个类似于以下内容的字符串:

"Start 1.2.3.4.5- 1.2.3.4.5- 1.2.3.4.5- 1.2.3.4.5- 1.2.3.4.5 End"

每个连字号之间的五个数字都与同一个"对象"配对,但每个数字表示单独的数据集。数字之间的句点分隔数据。

因此,开始后,1 =我们的第一个值,2 =我们的第二个值,3 =我们的第三个值,4 =我们的第四个值,5 =我们的第五个值。这5个值存储到同一个对象中。然后我们碰到第一个连字号,这将分隔"对象"。因此,有5个对象和每个对象的5个值。

我以1.2.3.4.5为例,但这些数字将随机化,最多有4个数字。所以它可以说像这样的Start12.3.100.1025.50-等等...

希望这有意义。以下是我迄今为止所做的:

MyString=我上面发布的长字符串

local extracted=string.match(MyString,"Start(.*)")

这将在字符串中返回Start之后的所有内容。但是,我想要返回Start之后的所有内容,然后在达到下一个连字号时将其截断。然后从那一点开始,我将重复这个过程,但是找到连字号之间的所有内容,直到我到达End。我还需要过滤出句点。此外,连字号/句点可以更改为其他内容,只要它们不是数字。

如何做到这一点?

点赞
用户2858170
用户2858170

只需使用包含数字和句点的任何模式。

"([%d%.]+)" 注意,你必须使用 % 逃逸句点,因为它是一个特殊字符。

local text = "Start1.2.3.4.5-1.2.3.4.5-1.2.3.4.5-1.2.3.4.5-1.2.3.4.5End"

for set in text:gmatch("([%d%.]+)") do
 print(set)
 local numbers = {}
 for num in set:gmatch("%d+") do
   table.insert(numbers, num)
 end
 print(table.unpack(numbers))
end

输出:

1.2.3.4.5
1   2   3   4   5
1.2.3.4.5
1   2   3   4   5
1.2.3.4.5
1   2   3   4   5
1.2.3.4.5
1   2   3   4   5
1.2.3.4.5
1   2   3   4   5
2019-11-28 09:11:03