lua 正则表达式匹配从 PHP 采用的关键短语与值

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

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

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

str = 'sample12_3 Word [link:a12]'

要查找的关键短语是 "[link:]",它必须返回的值是冒号和关闭方括号']'之间的任何值

[link:$value]

PCRE(PHP)表达式是:

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

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

有人可以帮我使用正确的lua迭代来运行这个表达式吗?

点赞
用户3832970
用户3832970

Lua patterns 不被认为是正则表达式,因为它们不能匹配常规语言。然而,在这里您很幸运,您可以将表达式转换为:

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

请参见 Lua demo

详细信息

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

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

2020-11-06 12:38:38