我有一个像 hello /world today/

我需要更换 /world today//MY NEW STRING/

阅读我发现的手册

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

我可以使用 gsub 要替换,但我想知道还有一种优雅的方式可以返回 /, ,我知道我可以修剪它,但是我想知道是否有模式。

有帮助吗?

解决方案

尝试以下内容之一:

  • 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建议的模式,以及更多的解释。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top