gpt4 book ai didi

c++ - 带开始/结束 anchor 的 CAtlRegExp 表达式问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:48 25 4
gpt4 key购买 nike

我有一些代码使用 CAtlRegExp 来执行一些验证。在特定情况下,邮政编码(5 或 5-4 格式)。此外,我希望数据就是这样,所以我使用 anchor (^ 和 $)。当我使用无 anchor 表达式时,匹配调用成功。当我添加 anchor 时,Match 调用因完全相同的数据而失败。

下面的代码是我正在做的,代码中为失败案例提供了值。我承认我不是正则表达式向导,但 RegEx Buddy 对代码中的格式表达式很满意。

如有任何帮助,我们将不胜感激。如果我遗漏了什么,请告诉我。

谢谢。

sData = "12345-1234";
m_FormatExpression = "^(\\d{5})(-(\\d{4}))?$";

CAtlRegExp<> regex;
REParseError status = regex.Parse( m_FormatExpression );

if( REPARSE_ERROR_OK == status )
{
CAtlREMatchContext<> match;
if( regex.Match( sData, &match ) )
{
result = true;
}
}

最佳答案

编辑:当我弄清楚问题时,完全改变了我的答案。

CAtlRegExp类不支持花括号 {} 中的重复计数;它使用那些返回匹配对象。表达式中的 54 是它必须匹配的文字字符。只是巧合,您测试的字符串中有一个 5,而带有 4 的部分是可选的。这个表达式非常有效:

m_FormatExpression = "^\\d\\d\\d\\d\\d(-\\d\\d\\d\\d)?$"; 

关于c++ - 带开始/结束 anchor 的 CAtlRegExp 表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549004/

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