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

问题描述 投票:1回答:1

这是我的问题。我正在使用Lua,并且我有一个看起来像这样的字符串:

“开始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 =我们的第五个值。这5个值存储到同一对象。然后我们打出第一个连字符,将“对象”分开。因此,有5个对象,每个对象有5个值。

我以1.2.3.4.5为例,但这些数字将随机分配至最多4位数字。所以它可以说像Start12.3.100.1025.50-等...

希望这很有道理。这是我到目前为止所做的:

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

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

这将返回字符串中除Start以外的所有内容。但是,我希望它在“开始”之后返回所有内容,然后在到达下一个连字符时将其切断。然后,从这一点开始,我将重复该过程,而是查找连字符之间的所有内容,直到到达End。我还需要过滤掉期间。此外,连字符/句号可以更改为其他形式,只要它们不是数字即可。

有关如何执行此操作的任何想法?

string lua
1个回答
1
投票

仅使用捕获包含数字和句点的任何内容的模式。

["([%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
© www.soinside.com 2019 - 2024. All rights reserved.