Lua模式用于提取/替换在/ /中的值。

我有一个字符串 hello /world today/

我需要用 /MY NEW STRING/ 替换 /world today/

通过阅读手册,我找到了如下代码:

newString = string.match("hello /world today/","%b//")

我可以使用 gsub 进行替换,但我想知道有没有一种优雅的方法来返回两个 / 之间的文本,我知道我可以直接截取它,但我想知道有没有一种模式。

原文链接 https://stackoverflow.com/questions/3633965

点赞
stackoverflow用户68204
stackoverflow用户68204

尝试使用以下之一:

  • slashed_text = string.match("hello /world today/", "/([^/]*)/")
  • slashed_text = string.match("hello /world today/", "/(.-)/")
  • slashed_text = string.match("hello /world today/", "/(.*)/")

这些代码的含义是string.match将返回与模式匹配的捕获字符串,如果没有捕获,将返回整个匹配的文本,所以关键是确保模式的贪婪程度正确,要记住Lua模式不是完整的正则表达式语言。

前两个示例应该匹配相同的文本。在第一个示例中,我明确要求模式匹配尽可能多的非斜杠字符。第二个示例(感谢 lhf)匹配任何字符的最短跨度,后面跟着一个斜杠。第三个示例更为贪婪,它匹配最长的跨度,这些跨度仍然可以被斜杠所跟随。

原始问题中的%b///.-/没有任何优势,因为这两个定界符是相同的字符。

编辑:添加了一个由lhf提出的模式和更多的解释。

2010-09-03 08:38:44