在 Lua 中,string.match
函数用于从字符串中提取与模式匹配的内容,其返回值取决于模式中的捕获组数量和匹配结果。
-
没有捕获组:
- 如果匹配成功,返回整个匹配的子串
- 如果匹配失败,返回
nil
Lualocal str = "hello world" local result = string.match(str, "world") print(result) -- 输出 "world"
-
有一个捕获组:
- 匹配成功时,返回该捕获组的内容
- 匹配失败时,返回
nil
Lualocal str = "age: 25" local age = string.match(str, "age: (%d+)") print(age) -- 输出 "25"
-
有多个捕获组:
- 匹配成功时,返回多个值,分别对应各个捕获组的内容
- 匹配失败时,返回
nil
Lualocal str = "name: Alice, age: 30" local name, age = string.match(str, "name: (%a+), age: (%d+)") print(name, age) -- 输出 "Alice" "30"
-
注意事项:
- 即使捕获组没有匹配到内容(如可选模式),也会返回空字符串
""
- 当模式匹配到多个位置时,只会返回第一个匹配的结果
- 即使捕获组没有匹配到内容(如可选模式),也会返回空字符串
总结来说,string.match
的返回值数量等于模式中捕获组的数量,每个返回值对应一个捕获组的内容;没有捕获组时返回整个匹配串;匹配失败则返回 nil
。