Lua正则表达式只有一个匹配

时间:2015-04-24 09:54:09

标签: regex lua

有人可以用lua" regex"又模式?

如何将此正则表达式转换为string.match()ytplayer\.config\s*=\s*(\{.+?\});的lua模式。您可以使用此网站来解释此正则表达式的作用: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({.});"),但它会返回一个完整的副本(使用kdiff检查)。

1 个答案:

答案 0 :(得分:3)

看一下,这将返回您捕获的群组:

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中,% escspes“魔术符号”。与*类似,修饰符-也匹配原始类的零个或多个字符。但是,它不是匹配最长的序列,而是匹配最短的序列。