仅当以下字符串与模式匹配时才匹配

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

我正在尝试匹配以某个字符串开头的整个字符串,然后匹配除

::
之外的任意数量的字符,如果
::
匹配,则仅接受后跟字符串
CASE
的情况。

例如: 以

Linus::
开头,后跟 0 个或更多 1 个字符的字符串,除非 if
::
那么
CASE
必须跟在 else 后面,否则仅匹配
::
之前的所有内容。

Linus::AOPKNS::CASE
会匹配

Linus::AOPKNS
会匹配

Linus::AOPKNS::OK
不匹配

我想我必须使用正向前瞻,但考虑到我想匹配

::
之前的任意数量的字符,我不太确定该怎么做。

python regex regex-lookarounds python-re
1个回答
0
投票

这可能最容易通过匹配包含

::CASE
的字符串来实现,或者如果失败,则匹配不包含
::
的字符串:

^Linus::(?:.*::CASE.*|(?!.*::).*)$

regex101

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