lua - Lua中的重复正则表达式

标签 lua lua-patterns

我需要找到 6 对十六进制数(不带 0x)的模式,例如。 “00 5a 4f 23 aa 89”

这个模式对我有用,但问题是是否有任何方法可以简化它?

[%da-f][%da-f]%s[%da-f][%da-f]%s[%da-f][%da-f]%s[% da-f][%da-f]%s[%da-f][%da-f]%s[%da-f][%da-f]

最佳答案

Lua patterns do not support limiting quantifiers以及正则表达式支持的更多功能(因此,Lua 模式甚至不是正则表达式)。

您可以动态构建模式,因为您知道需要重复模式的一部分的次数:

local text = '00 5a 4f 23 aa 89'
local answer = text:match('[%da-f][%da-f]'..('%s[%da-f][%da-f]'):rep(5) )
print (answer)
-- => 00 5a 4f 23 aa 89

参见 Lua demo .

'[%da-f][%da-f]'..('%s[%da-f][%da-f]'):rep(5)可以使用 %x 十六进制字符速记进一步缩短:

'%x%x'..('%s%x%x'):rep(5)

关于lua - Lua中的重复正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70242040/

相关文章:

string - 如何捕获括号之间的字符串?

Lua Pattern 匹配一个模式

makefile - Lua正则表达式匹配makefile中的模式

c++ - 在Lua中存储Lua脚本

python - ubuntu 上的 lunatic-python/lupa 导入问题

string - 使用 Lua 从 URL 获取文件名

string - 在表中插入字符串的引号和未引号部分

string - Lua string.gsub具有多个模式

string - Lua unicode,使用 string.sub() 和两字节字符

string - 将字符串转换为算术运算符