gpt4 book ai didi

C# Regex 将 aabbccddeeff 匹配为两个 aabbcc 和 ddeeff 集

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:00 25 4
gpt4 key购买 nike

当我这样做时:

var m = Regex.Match("aabbccddeeff", "[0-9a-fA-F]{6}");

结果我只得到 aabbcc。实际上(使用 .Matches)有两个匹配项:aabbcc 和 ddeeff。

为什么?这会导致 DataAnnotations.RegularExpressionAttribute 出现问题,因为它需要覆盖整个输入值的单个匹配项。

如何正确编写此代码以获得单个匹配项?

最佳答案

你想在这里实现什么目标?

提供的正则表达式将尝试匹配恰好 6 个字母/数字的序列。由于输入中有 12 个连续的字母数字字符,因此有 2 个连续的匹配项。 Regex.Match 返回第一个,Regex.Matches 两个,完全按照它们应该的方式返回。

如果您想断言整个 文本将精确匹配正则表达式(因为您将它用于输入验证,我假设是这种情况),以便整个 输入字符串应满足Regex.IsMatch,将表达式更改为:

^[0-9a-fA-F]{6}$

另一方面,如果您不想将匹配限制为恰好 6 个字符,请将其更改为:

[0-9a-fA-F]+ 

或者,如果您要匹配 12 个字符:

[0-9a-fA-F]{12}

当然,您可能还需要 ^$,这取决于您的需要。

关于C# Regex 将 aabbccddeeff 匹配为两个 aabbcc 和 ddeeff 集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873509/

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