繁体   English   中英

如果在3个否则为可选的正则表达式表达式的序列中至少有1个字符不匹配,则要求为“不匹配”

[英]Required is “not matching” if not at least 1 character matches in a sequence of 3 otherwise optional regex expressions

我有一个很长的正则表达式,它由3个部分组成,所有这些部分都是可选的,但前提是必须匹配它们中的至少一个字符。

为简便起见,我们将这3个长段称为(A),(B)和(C)。

当前,它们以这种方式编码:

(A)?(B)?(C)?

当然,这并没有强制执行先决条件。

我知道,我可以做

((A)(B)?(C)?)|((A)?(B)(C)?)|((A)?(B)?(C))

在每个Or分支中,使一部分成为强制性。

但是由于这些表达式确实很冗长,所以我最终会陷入混乱。

是否有某种限定符可以直接在((A)?(B)?(C)?)上执行该限定符(即,如果不匹配至少1个字符,则不匹配)?

您可以使用前瞻性检查至少一个部分。

(?=A|B|C)(A)?(B)?(C)?

仅当下一个序列为ABC ,此匹配。 在任何其他情况下(其中(A)?(B)?(C)?都将匹配一个空字符串),由于前瞻,因此将不存在匹配项。

不利的一面是,您对序列的序列进行了两次检查-但是我对此一无所知。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM