在像 {any {possible}characters}{anything}
这样的字符串中,我想删除最后 {...}
出现的地方,其本身不能包含另一个 {...}
组合。搜索最后一个 {
然后使用 string.sub
没有问题。
但是,是否有一个带有模式匹配的简短命令可以删除最后一个命令,例如:
str = "{any {possible} characters}{anything}"
print(str:gmatch(...))
应该写{任何{可能}字符}
最佳答案
这里有两种可能的解决方案。
末尾没有嵌套大括号:
string.gsub('{any {possible} characters}{anything}', '{[^{}]*}$', '')
这里,{[^{}]*}$
匹配 {
,然后是除 {
和 之外的任何 0+ 个字符>}
,然后是必须位于字符串末尾的 }
字符 ($
)。
如果末尾有嵌套大括号,请使用以下内容:
string.gsub('{anything}{any {possible} characters}', '%b{}$', '')
这里,%b{}$
匹配内部有任意数量嵌套大括号的 {...}
子字符串,然后断言字符串末尾的位置与$
。
请注意,您可以添加 %s*
来匹配任何 0+ 空格(例如,如果存在尾随空格,则很有用)- '%b{}%s*$'
.
关于string - Lua:删除最后一个{..},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52659825/