lua string.match不';与预期不匹配(与其他语言不同)

lua string.match不';与预期不匹配(与其他语言不同),lua,Lua,我不明白第二个结果。在我的选项中,它应该是“stackoverflow.com/questions/ask”作为“(.*/)”匹配“stackoverflow.com/questions/”和“*”匹配“ask”。有人能告诉我为什么第二个结果是“stackoverflow.com/questions/”?x=string.match(a,“(.*/)”)和x=string.match(a,“(.*/)”)是否相同?表示您使用了捕获。因此,您可以这样使用它: a = "stackoverflow.

我不明白第二个结果。在我的选项中,它应该是“
stackoverflow.com/questions/ask
”作为“
(.*/)
”匹配“
stackoverflow.com/questions/
”和“
*
”匹配“
ask
”。有人能告诉我为什么第二个结果是“
stackoverflow.com/questions/
”?
x=string.match(a,“(.*/)”)
x=string.match(a,“(.*/)”)
是否相同?

表示您使用了捕获。因此,您可以这样使用它:

a = "stackoverflow.com/questions/ask"
print(string.match(a,"(.*/)"))   -- stackoverflow.com/questions/
print(string.match(a,"(.*/).*")) -- stackoverflow.com/questions/


模式可以包含括在括号中的子模式;它们描述了捕获。匹配成功后,将存储(捕获)匹配捕获的主题字符串的子字符串以供将来使用。捕获将根据其左括号进行编号。例如,在模式“(a*()%w(%s*))”中,匹配“a*()%w(%s*)”的字符串部分存储为第一个捕获(因此具有数字1);字符匹配“.”用数字2捕获,匹配“%s*”的部分用数字3捕获。

那么为什么您认为它应该是“stackoverflow.com/questions/ask”?有关如何提问和相应更新问题的详细信息,请参阅链接。因为
string.match(a,“(.*/).*)”
返回捕获,而不是整个匹配。尝试
string.match(a,(.*/).*)
获取两个捕获。@EgorSkriptunoff获取了它。我现在有一个新问题。我看到某人的Lua代码如下:
x=string.match(a,“(.*/).*)
。它与
x=string.match(a,“(.*/”)”
有什么区别吗?如果您有新问题,请打开新问题。这不是评论的目的。。。还有,如果有什么不同,是什么阻止了你尝试呢?你知道启动Lua解释器是免费的@hcch-
string.match(a,“(.*/)”)
string.match(a,“(.*/)”)相同
。但是使用
string.gsub
时,这些模式的行为会有所不同。
print(string.match(a,"((.*/).*)"))