[英]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)?
仅当下一个序列为A
或B
或C
,此匹配。 在任何其他情况下(其中(A)?(B)?(C)?
都将匹配一个空字符串),由于前瞻,因此将不存在匹配项。
不利的一面是,您对序列的序列进行了两次检查-但是我对此一无所知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.