lua 正则表达式,用于将关键字与 PHP 采用的值进行匹配

Posted

技术标签:

【中文标题】lua 正则表达式,用于将关键字与 PHP 采用的值进行匹配【英文标题】:lua Regular expression for matching key phrase with value adopted from PHP 【发布时间】:2021-02-19 04:42:25 【问题描述】:

我有一个适用于 PCRE(php) 的正则表达式模式,我想在 lua 文件中使用它。

我的目标是检查一个值(字符串)以查看它是否包含键标识符,然后获取该值。

测试字符串可能包含各种字符,包括字母数字和特殊字符。字符串内部是一个键,后跟一个值:

str = 'sample12_3 Word [link:a12]'

要查找的关键短语是“[link:]”,它必须返回的值是 ':' 分号之后和右方括号 ']' 括号之前的任何内容

[link:$value]

PCRE(PHP) 表达式为:

\[(link):(.+):?[^\[\]]*\]

第 1 组:“链接” 第 2 组:'a12'

谁能帮我用正确的lua迭代这个表达式?

【问题讨论】:

【参考方案1】:

Lua 模式不被视为正则表达式,因为它们无法匹配正则语言。不过,你在这里很幸运,你可以把表达式翻译成

local str = 'sample12_3 Word [link:a12]'
result, _ = str:match("%[link:([^][]*)]")
print(result) -- => a12

请参阅Lua demo。

详情

%[ - 匹配文字 [ char link: - 文字 link: 文字 ([^][]*) - 捕获组 #1:除 [] 之外的任何零个或多个字符 ] - ] 字符。

:match() 函数将在此处返回捕获组的内容,因为捕获组存在于模式中。

【讨论】:

以上是关于lua 正则表达式,用于将关键字与 PHP 采用的值进行匹配的主要内容,如果未能解决你的问题,请参考以下文章

Lua中字符串与模式匹配(正则表达式)

Lua 正则表达式

仅在 Lua 中使用正则表达式替换整个单词

字符串与正则表达式

前端学PHP之正则表达式基础语法

前端学PHP之正则表达式基础语法