gpt4 book ai didi

.net - 必需的是 "not matching"如果不是至少 1 个字符在 3 的序列中匹配,否则可选的正则表达式

转载 作者:可可西里 更新时间:2023-11-01 11:46:00 25 4
gpt4 key购买 nike

我有一个相当长的正则表达式,由 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)? 将匹配一个空字符串),由于先行,将没有匹配项。

这有一个缺点,您的序列是经过两次检查的序列 - 但我真的不知道有什么办法可以解决这个问题。

关于.net - 必需的是 "not matching"如果不是至少 1 个字符在 3 的序列中匹配,否则可选的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44733447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com