Lua 恰好有一个匹配项的正则表达式

Lua regular expression with exactly one match

有人可以帮我 lua "regex" aka 模式吗?

如何将此正则表达式转换为 string.match() 的 lua 模式:ytplayer\.config\s*=\s*(\{.+?\});。您可以使用此站点来解释此正则表达式的作用:https://regex101.com/#pcre

本质上我想寻找一个以 ytplayer.config = 开头的字符串(注意等号前后可能的空格),然后是 { 直到我们找到分号。

ytplayer.config = {a lot of text, special characters and everything else which is possible...}};这可能是一个结果。

目前我有 string.match(s, "ytplayer.config%s=%s({.});") 但它 returns 是一个精确的副本(用 kdiff 检查)。

看看,这将 return 您捕获的群组:

print(string.match("ytplayer.config = {a lot of text, special characters and everything else which is possible...}};", "^ytplayer%.config%s*=%s*({.-});"))

输出:

{a lot of text, special characters and everything else which is possible...}}

正则表达式是 ^ytplayer%.config%s*=%s*({.-});。如果您不想检查字符串开头,请从开头删除 ^

请参阅this demo

Lua patterns中,%转义"magic symbols"。与 * 一样,修饰符 - 也匹配零次或多次出现的原始 class 字符。但是,它没有匹配最长的序列,而是匹配最短的序列。