lua string.match不符合预期(与其他语言不同)

时间:2017-09-01 03:57:12

标签: lua

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

我无法理解第二个结果。在我的选项中,它应为“stackoverflow.com/questions/ask”,因为“(.*/)”匹配“stackoverflow.com/questions/”,“.*”匹配“ask”。有人可以告诉我为什么第二个结果是“stackoverflow.com/questions/”? x = string.match(a,"(.*/).*")x = string.match(a,"(.*/)")是否相同?

1 个答案:

答案 0 :(得分:1)

()表示你已经使用了Captures.so也许你可以像这样使用它:

print(string.match(a,"((.*/).*)"))

Captures:

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