gpt4 book ai didi

c++ - 我的最后一个正则表达式不起作用,但我无法弄清楚原因

转载 作者:太空宇宙 更新时间:2023-11-04 14:18:27 26 4
gpt4 key购买 nike

我有两个 vector ,一个包含我的正则表达式,另一个包含将根据正则表达式检查其中的字符串,除了这个(如下所示)之外,大多数都工作正常,该字符串是正确的字符串并且匹配正则表达式,但它输出错误而不是正确。

输入字符串

.C/IATA

代码如下

std::string errorMessages [6][6] = {
{
"Correct Corparate Name\n",
},
{
"Incorrect Format for Corporate Name\n",
}
};

std::vector<std::string> el;
split(el,message,boost::is_any_of("\n"));
std::string a = ("");

for(int i = 0; i < el.size(); i++)
{
if(el[i].substr(0,3) == ".C/")
{
DCS_LOG_DEBUG("--------------- Validating .C/ ---------------");
output.push_back("\n--------------- Validating .C/ ---------------\n");
str = el[i].substr(3);
split(st,str,boost::is_any_of("/"));
for (int split_id = 0 ; split_id < splitMask.size() ; split_id++ )
{
boost::regex const string_matcher_id(splitMask[split_id]);
if(boost::regex_match(st[split_id],string_matcher_id))
{
a = errorMessages[0][split_id];
DCS_LOG_DEBUG("" << a )
}
else
{
a = errorMessages[1][split_id];
DCS_LOG_DEBUG("" << a)
}
output.push_back(a);
}
}
else
{
DCS_LOG_DEBUG("Do Nothing");
}

st[split_id] = "IATA"

splitMask[split_id] = "[a-zA-Z]{1,15}"<---

但它仍然输出Incorrect format for corporate name

我不明白为什么它打印不正确,而它应该是正确的,有人可以帮我吗?

最佳答案

您的正则表达式和周围的逻辑没问题。

您需要扩展日志记录并在调用 boost::regex_match 之前打印 splitMaskst 的相关部分仔细检查这些值是否如您所愿。打印它们并用一些标点符号包围,并打印字符串长度以确保。

您可能知道,boost::regex_match 仅在整个字符串匹配时才找到匹配项;因此,如果某处有一个不可打印的字符,或者可能有一个尾随空格字符,这将完美地解释您所看到的结果。

关于c++ - 我的最后一个正则表达式不起作用,但我无法弄清楚原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9376977/

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