string - 如何以某个字符开始字符串并以某个字符结束?(卢阿)
问题描述
这是我的问题。我正在使用 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 之外的所有内容。但是,我希望它在 Start 之后返回所有内容,然后在到达下一个连字符时切断。然后从那时起,我将重复该过程,但会查找连字符之间的所有内容,直到我到达 End。我还需要过滤掉句点。此外,连字符/句号可以更改为其他内容,只要它们不是数字即可。
关于如何做到这一点的任何想法?
解决方案
只需使用捕获包含数字和句点的任何内容的模式。
"([%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
推荐阅读
- python - Python 我所有的键都使用相同的值
- html - 将 XPath 用于类和其他属性值吗?
- .net - Microsoft Owin 在本地打破 VS
- java - 如何将这些值设置为 List
从服务器上的响应返回后? - javascript - 在原型对象Javascript中引用html元素
- java - Selenium WebDriver 获取元素 SCREEN 坐标
- reactjs - 反应引导 ul-tabs 不起作用
- javascript - 怎么画双圆?
- xml - 如何在捕获属性的同时对 aws 胶水中的嵌套 xml 标签进行分类
- cassandra - Cassandra 更新声明