)?\s*?\w{1,}" 请记住,我在代码中用第二个\转义了\。 在下面的字符串中搜索时。我想我很接近,但没-6ren">
gpt4 book ai didi

c++ - 提升正则表达式 : Specific Question

转载 作者:行者123 更新时间:2023-11-28 08:17:51 24 4
gpt4 key购买 nike

我正在尝试使用这个表达式:

Expression:  "\w{1,}\s*?\-\-(\>)?\s*?\w{1,}"

请记住,我在代码中用第二个\转义了\。

在下面的字符串中搜索时。我想我很接近,但没有雪茄。我希望上面的表达式能够在下面的文本中找到匹配项。我哪里错了?

Text:        "AB --> CD"
Text: "AB --> Z"
Text: "A --> 123d"
etc.

使用的资源:

  1. http://www.solarix.ru/for_developers/api/regex-en.html

  2. http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/introduction_and_overview.html

  3. http://www.regular-expressions.info/reference.html


更新

评论对我有帮助。我仍然希望看到人们在我的线程上发帖,出于记录目的,帮助他们掌握正则表达式的正则表达式站点。不管怎样,我的代码(主要是从 boost 网站复制的)是。

/* All captures from a regular expression */
#include <boost/regex.hpp>
#include <iostream>

/* Compiled with g++ -o regex_tut -lboost_regex -Wall ./regex_tut.cpp */

void print_captures(const std::string& regx, const std::string& text)
{
boost::regex e(regx);
boost::smatch what;
std::cout << "Expression: \"" << regx << "\"\n";
std::cout << "Text: \"" << text << "\"\n";
if(boost::regex_match(text, what, e, boost::match_extra))
{
unsigned i;
std::cout << "** Match found **\n Sub-Expressions:\n";
for(i = 0; i < what.size(); ++i) {
std::cout << " $" << i << " = \"" << what[i] << "\"\n";
}
}
else
{
std::cout << "** No Match found **\n";
}
}

int main(int argc, char* argv[ ])
{
print_captures("^\\w+\\s*-->?\\s*\\w+\\s*(\\(\\d+\\))?", "AB --> CD (12)" );
return 0;
}

似乎有效。请尽管如此我可以接受一个答案张贴你最喜欢的网站并给新手一些指示=)。

最佳答案

不确定我是否正确理解了您的问题,但是如果您希望您的正则表达式匹配 "AB --> CD"中的 ABCD 您可以使用以下正则表达式:

Expression:  "(\w+)\s*-->?\s*(\w+)"

关于c++ - 提升正则表达式 : Specific Question,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035621/

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