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 模式的资源:
我想捕获一些字符串,但是为什么不起作用?我注意到使用 []
它只会检测到每个单独的字符,我想知道是否可以使用更多字符
我想取这些组合,但是错了
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 模式的资源: