Lua 模式,组合手柄问题

Lua Pattern, problem for combination handle

我想捕获一些字符串,但是为什么不起作用?我注意到使用 [] 它只会检测到每个单独的字符,我想知道是否可以使用更多字符

我想取这些组合,但是错了

A ||

Z <<

O ~~~

O..


当前代码:

C = [[

A

B|

C<

Z<<

O~~~

O.

O..

]]

C = C:gsub("(\n%a[(||)(<<)(~~~)(%.%.%.)])",function(a)
print(a) 
end)

输出:

B|

C<

Z<

O~

O.

O.

您的模式应该类似于:(\n%a[|<~%.]+)

( 放在 lua 模式中 set 只是将 ( 添加到可以匹配的字符列表中,它不会生成 "sub-set" 或强制要求的匹配长度。

如果在一组中重复,

Lua 模式不匹配多个字符。要匹配多个字符,您需要使用 +* 或像这样使用集合的多个实例:(\n%a[|<~%.][|<~%.][|<~%.]).

问题是该集合的多个实例必须全部匹配,而如果使用 +,您可以匹配的实例长度有可变性,例如一个 . 而不是三.

您不能强制粒度来匹配 2 个不同长度的字符。通过这个,我的意思是你不能在同一模式中专门匹配 O<<O~~~ 而不是匹配 O<<<O~~O<<~.

用于详细了解 Lua 模式的资源:

FHUG - Understanding Lua Patterns