在 LUA 中进行模式匹配时,如何将单词与数字结合起来?
How can I combine words with numbers when pattern matching in LUA?
我正在尝试匹配 LUA 中遵循格式 Word 100.00% ~(45.56, 34.76)
的任何字符串。因此,我希望做一个接近(理论上)的正则表达式:
%D%s[%d%.%d]%%(%d.%d, %d.%d)
但到目前为止我运气不好。 LUA的图案很奇怪。
我错过了什么?
你的模式很接近你忽略了允许一个数字的多个实例你可以通过在 %d+
处使用 +
来做到这一点。
您也没有在模式中正确使用 [
、(
和 .
。
模式中的 [
s 将创建一组您尝试匹配的字符,例如 [abc]
表示您正在寻找匹配任何 a
s b
s 或 c
在那个位置。
(
用于定义捕获,以便在匹配时返回您想要返回的特定值而不是整个字符串,为了将它用作匹配的字符,您需要使用 %
。
.
将匹配任何字符,而不是特定的 .
如果你想特定地匹配 .
,你需要添加一个 %
来转义。
local str = "Word 100.00% ~(45.56, 34.76)"
local pattern = "%w+%s%d+%.%d+%%%s~%(%d+%.%d+, %d+%.%d+%)"
print(string.match(str, pattern))
如果输入字符串与模式匹配,您将在此处看到打印,否则您将看到 nil。
我正在尝试匹配 LUA 中遵循格式 Word 100.00% ~(45.56, 34.76)
的任何字符串。因此,我希望做一个接近(理论上)的正则表达式:
%D%s[%d%.%d]%%(%d.%d, %d.%d)
但到目前为止我运气不好。 LUA的图案很奇怪。
我错过了什么?
你的模式很接近你忽略了允许一个数字的多个实例你可以通过在 %d+
处使用 +
来做到这一点。
您也没有在模式中正确使用 [
、(
和 .
。
模式中的 [
s 将创建一组您尝试匹配的字符,例如 [abc]
表示您正在寻找匹配任何 a
s b
s 或 c
在那个位置。
(
用于定义捕获,以便在匹配时返回您想要返回的特定值而不是整个字符串,为了将它用作匹配的字符,您需要使用 %
。
.
将匹配任何字符,而不是特定的 .
如果你想特定地匹配 .
,你需要添加一个 %
来转义。
local str = "Word 100.00% ~(45.56, 34.76)"
local pattern = "%w+%s%d+%.%d+%%%s~%(%d+%.%d+, %d+%.%d+%)"
print(string.match(str, pattern))
如果输入字符串与模式匹配,您将在此处看到打印,否则您将看到 nil。