Rego 正则表达式以匹配句子中的特定单词

Rego regex to match a specific word from a sentence

我写了一个正则表达式

 \blates(t|)?\b

在句子“/man/service/man-aaaaaa-lllll-latest/zzzn2-iii-ooo-x00_00-gg”中搜索单词“最新”。

我正在通过 Rego 游乐场测试 'Rego' 中的规则,每当句子中有单词 'latest' 时,我想得到一个布尔输出 'true'。

雷哥游乐场link:https://play.openpolicyagent.org/p/e3vDQyYKlc

重新输入

{
    "message": "/man/service/man-aaaaaa-lllll-latest/zzzn2-iii-ooo-x00_00-gg"
}

Rego 规则:

package play

default hello = false

hello {
    m := input.message
    regex.match("\blates(t|)?\b", m)
}

当前输出:

{
    "hello": false
}

每当 Regex 匹配单词 'latest' 时的预期输出:

{
    "hello": true
}

请建议我是否必须使用任何其他正则表达式条件来实现预期结果 https://www.openpolicyagent.org/docs/latest/policy-reference/#regex

你可以使用

regex.match("\blatest?\b", m)

regex.match(".*\blatest?\b.*", m)

参见Rego playground demo

注意(t|)?是匹配t或空串的捕获组,基本等于t?模式(不需要捕获t =]) 匹配可选的 t 字符。