lua 正则表达式,用于将关键短语与从 PHP 中采用的值相匹配

lua Regular expression for matching key phrase with value adopted from PHP

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

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

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

str = 'sample12_3 Word [link:a12]'

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

[link:$value]

PCRE(PHP) 表达式为:

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

第 1 组:'link' 第 2 组:'a12'

任何人都可以帮我正确地 lua 迭代这个表达式吗?

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

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

参见Lua demo

详情

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

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