提问人:Katelyn Raphael 提问时间:4/18/2022 最后编辑:Katelyn Raphael 更新时间:4/18/2022 访问量:2422
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”中搜索单词“latest”。
我正在通过 Rego playground 在“Rego”中测试一个规则,每当句子中有一个单词“latest”时,我都想得到一个布尔输出为“true”。
Rego Playground 链接: https://play.openpolicyagent.org/p/e3vDQyYKlc
Rego 输入
{
"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
}
每当正则表达式与单词“latest”匹配时的预期输出:
{
"hello": true
}
请建议我是否必须使用任何其他正则表达式条件才能达到预期的结果 https://www.openpolicyagent.org/docs/latest/policy-reference/#regex
答:
2赞
Wiktor Stribiżew
4/18/2022
#1
你可以使用
regex.match("\\blatest?\\b", m)
或
regex.match(".*\\blatest?\\b.*", m)
请参阅 Rego playground 演示。
请注意,这是一个与空字符串匹配的捕获组,并且基本上等于与可选字符匹配的模式(无需捕获 )。(t|)?
t
t?
t
t
下一个:优化 IF 语句中的布尔条件
评论
"\\blatest?\\b"
"\\blatest?\\b"
regex.match(".*\blatest?\b.*", m)
regex.match(".*\\blatest?\\b.*", m)
regex.match("\\blatest?\\b", m)
"hello": true