lua - Lua Pattern,组合句柄的问题
问题描述
我想捕获一些字符串,但是为什么这不起作用?我注意到使用[]
它只能检测每个单独的字符,我想知道是否可以使用更多字符
我想拿这些组合,但它是错误的
一个 ||
Z <<
哦~~~
哦..
当前代码:
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[|<~%.]+)
.
将 a(
放在 lua 模式中set
只会添加(
到可以匹配的字符列表中,它不会产生“子集”或强制要求的匹配长度。
如果在一个集合中重复,Lua 模式不匹配多个字符。要匹配多个字符,您需要使用+
,*
或使用集合的多个实例,如下所示:(\n%a[|<~%.][|<~%.][|<~%.])
.
与此相关的问题是该集合的多个实例必须全部匹配,而如果+
使用它,您可以匹配的实例长度存在可变性,例如一个.
而不是三个。
您不能强制粒度来匹配 2 个不同长度的字符。我的意思是你不能在不匹配的情况O<<
下O~~~
以相同的模式具体匹配O<<<
,O~~
或O<<~
.
了解更多关于 Lua 模式的资源:
推荐阅读
- python-3.x - python:删除一列中的多个条目,用逗号分隔
- vpn - GCP中的区域冲突VPN?
- r - 使用数据拆分为 KNN 找到最佳 k 值
- sql - 如何在sql中找到不在正确位置的产品
- ios - PromiseKit:使用不同类型的 Promise 数组调用 when(fulfilled:)
- c# - 尝试将项目添加到 C# 中的类中的列表属性时出现运行时错误
- mysql - ORDER BY FIELD 中使用的 MySQL 字符串
- python-3.x - 如何将 Google Cloud AI Platform Jupyter Lab 升级到 Python 3.7+
- .net - JSON反序列化创建列表
- oauth-2.0 - Facebook OAuth 登录未在 ASP.NET Core 2.2 中获取用户配置文件