我正在尝试与以下输入进行匹配:
foo=bar baz foo:1 foo:234.mds32 notfoo:baz foo:bak foo:nospace foo:bar
和输出 6 匹配:除 .匹配项应类似(即不包括尾随空格或前导空格。notfoo
foo:bar
一般来说,我试图匹配的规则是:
查找任何 kv 对,其中键为 ,并且 kv 对由 或 分隔。foo
=
:
对是彼此分离的字符串。kv 对之间可能有多个空格或随机字符串。
作为 ^ 的结果,kv 对必须在两侧具有空格或行开始/结束。
我目前对此最好的正则表达式是 ,然后提取组。'(?:\s|^)(?P<primary>foo[:=].+?)\s'
primary
这样做的问题是因为我们包含作为匹配的一部分,我们遇到了重叠正则表达式的问题:因为我们尝试空格字符匹配2x,并且golang正则表达式不返回重叠匹配项。\s
foo:bak foo:nospace foo:bar
在其他正则表达式引擎中,我认为可以使用前瞻,但据我所知,golang正则表达式不允许这样做。
有什么办法可以做到这一点吗?
去游乐场链接: https://play.golang.org/p/n8gnWwpiBSR
慕仙森
aluckdog
哈士奇WWW
相关分类