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,"(.*/)")
是否相同?
答案 0 :(得分:1)
()表示你已经使用了Captures.so也许你可以像这样使用它:
print(string.match(a,"((.*/).*)"))
模式可以包含括在括号中的子模式;他们描述了捕获。当匹配成功时,存储(捕获)与捕获匹配的主题字符串的子串以供将来使用。捕获根据其左括号进行编号。例如,在模式“(a *(。)%w(%s *))”中,匹配“a *(。)%w(%s *)”的字符串部分被存储为第一次捕获(因此有1);字符匹配“。”使用数字2捕获,匹配“%s *”的部分具有数字3。