使用 string.match 处理语音标记
Dealing with speech marks with string.match
我有一个 xml 页面,我有一个监控系统扫描,这里是源数据:
`<queues>
<queue name="workQueue">
<stats size="0" consumerCount="28" enqueueCount="29320" dequeueCount="37000"/>
这是我目前的代码:
local pattern = " size=(%d+) "
local a = alarm.get("CO13974960-19518")
local vsize = string.match(a.message, pattern)
local sum = vsize
我正在尝试从 XML 页面定位这一点数据:
stats size="0"
值“0”是我感兴趣的数字,我正在寻找一种方法来通过脚本捕获该数字(无论它到达什么)。
我认为我的脚本正在寻找:
size=0
而不是 size="0"
但我不确定如何使用正确的语法。
一般来说,使用 Lua 模式(或正则表达式)来解析 XML 并不是一个好主意,而是使用 XML 解析器。
无论如何,在这个例子中,
local pattern = " size=(%d+) "
- 白色space很重要,所以开头和结尾的白色space是
试图匹配白色 space 字符但失败了。
- 您已经注意到
(%d)
周围需要双引号,它们必须在双引号字符串中转义。
+
是贪心的,在这里可能有用,但非贪心的 -
更好
选择。
这个有效
local pattern = "size=\"(%d-)\""
请注意,您可以使用单引号字符串,这样就不需要转义双引号了:
local pattern = 'size="(%d-)"'
我有一个 xml 页面,我有一个监控系统扫描,这里是源数据:
`<queues>
<queue name="workQueue">
<stats size="0" consumerCount="28" enqueueCount="29320" dequeueCount="37000"/>
这是我目前的代码:
local pattern = " size=(%d+) "
local a = alarm.get("CO13974960-19518")
local vsize = string.match(a.message, pattern)
local sum = vsize
我正在尝试从 XML 页面定位这一点数据:
stats size="0"
值“0”是我感兴趣的数字,我正在寻找一种方法来通过脚本捕获该数字(无论它到达什么)。
我认为我的脚本正在寻找:
size=0
而不是 size="0"
但我不确定如何使用正确的语法。
一般来说,使用 Lua 模式(或正则表达式)来解析 XML 并不是一个好主意,而是使用 XML 解析器。
无论如何,在这个例子中,
local pattern = " size=(%d+) "
- 白色space很重要,所以开头和结尾的白色space是 试图匹配白色 space 字符但失败了。
- 您已经注意到
(%d)
周围需要双引号,它们必须在双引号字符串中转义。 +
是贪心的,在这里可能有用,但非贪心的-
更好 选择。
这个有效
local pattern = "size=\"(%d-)\""
请注意,您可以使用单引号字符串,这样就不需要转义双引号了:
local pattern = 'size="(%d-)"'