LUA模式用于提取 /替换价值 / /
-
30-09-2019 - |
题
我有一个像 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建议的模式,以及更多的解释。
不隶属于 StackOverflow