如何在lua regex中匹配此模式,以便它可以捕获字符串中的内容

问题描述 投票:0回答:1

我正在尝试在下划线所包围的单词之间插入两个星号。

到目前为止,当下划线内只有一个单词时,我成功匹配了模式,如果中间有空格,则模式失败。

我如何编写正确的模式以在下划线之间找到单词并在其之间插入星号?这是我的代码的MWE:

function string:add(start, fim, word)
    return self:sub(1,start-1) .. "**" .. word .. "**" .. self:sub(fim+1)
end

regex = "In this string I'm putting _many_ words to test if I _wrote_ the code right to _match patterns_."

while regex:find("_(%w+)_") ~= nil do
    start, fim = regex:find("_(%w+)_")
    regex = regex:add(start, fim, regex:match("_(%w+)_"))
end

print(regex)

输出为:

在此字符串中,我要输入**many**个单词以测试我是否**wrote**_match patterns_的代码权限。

可以看出,在_match patterns_中有两个单词和一个空格,因此我的模式_(%w+)_跳过了它。我如何也包含它?

regex lua lua-patterns
1个回答
0
投票

您可以使用[]进行设置,并定义该设置以允许使用字母数字字符和空格:

regex:find("_([%w%s]+)_")

这里是您可以了解更多有关lua模式的资源:

FHUG: Understanding Lua Patterns

© www.soinside.com 2019 - 2024. All rights reserved.