C++中的Regex,从正则表达式中获取文本任何部分的字符串
Regex in C++ to fetch from a regex expression a string in any part of the text
示例:
这是字符串:"blablabla123:550:404:487blablabla500:488:474:401blablablabla"
这是我正在使用的:
string reg = "(\d{1,3}):(\d{1,3}):(\d{1,3}):(\d{1,3})";
这显然不起作用,因为它正在寻找从数字开始的东西,我也想获取所有结果,但我不知道如何做到这一点,尽管我找了很多。:/
我想有像2个阵列与:
数组1:应返回[1]="123";[2] ="550";[3] ="404";[4]="487"
数组2:应返回[1]="500";[2] ="488";[3] ="474";[4] ="401";
#include <regex>
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
typedef std::tr1::match_results<std::string::const_iterator> str_iterator;
int main () {
str_iterator res;
string regex = "(\d{1,3}):(\d{1,3}):(\d{1,3}):(\d{1,3})";
string str = "blablabla123:550:404:487blablabla500:488:474:401blablablabla";
const std::tr1::regex pattern(regex.c_str());
bool valid = std::tr1::regex_match(str, res, pattern);
//res is gonna be an array with the match results
if(valid){
printf("Matched with size of %dn", res.size());
printf("Result 1: %s",res[1]);
printf("Result 2: %s",res[2]);
printf("Result 3: %s",res[3]);
printf("Result 4: %s",res[4]);
}else{
printf("Not Matched");
}
_getch();
return 0;
}
regex_match
将尝试匹配整个字符串。显然,在您的情况下,结果将是错误的(不匹配)。
请尝试使用regex_search
。
这个怎么样:
[^d]*(d+)[^d]+(d+)[^d]+(d+)[^d]+(d+)[^d]+(d+)[^d]+(d+)[^d]+(d+)[^d]+(d+)[^d]*
这很糟糕,但我们将检索到由任何其他字符分隔的8个数字。
group(0) group(1) group(2) group(3) group(4) group(5) group(6) group(7)
123 550 404 487 500 488 474 401
否则,您可以修改字符串,将每个非数字替换为:
,这将为您提供::::::::::123:550:404:487:::::::::500:488:474:401::::::::::::
您只需通过解析字符串来保持非空值。但只有当您确定没有空值
相关文章:
- 在处理任何字符大小的模板中使用字符串文本
- 我想使用 "cout" 命令慢慢打印文本,但我真的找不到任何解决方案
- 将文本文件读取到2D数组中,但数组开始为超过数组[39][]的任何内容输出胡言乱语
- 整数文本太大,无法用任何整数类型表示--C++
- 是否有任何方法可以在用户输入文本时读取字符
- 打开任何文本文件
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- C 初学者:如何防止表中的文本将任何文本推向其右侧
- 读取 C++ 中的文本文件不显示任何输出
- C++为什么 setWindowText 不显示任何文本?
- 从文本中抓取句子,将所有句子分别存储在某个数据结构中
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 有没有任何方法可以从C++中的文本中提取URL
- 是否有任何中间件/库可以将二进制或文本数据从64位转换为32位
- 使用c++在opencv中检测图像中任何文本的位置
- 使用C++或任何windows脚本语言格式化文本数据
- 制作参数化用户定义文本的任何方法
- 我的C++从文本文件读取的程序无法正常工作,但我没有看到任何代码错误?
- C++ 中的列文本抓取
- 从Windows应用程序的文本框中抓取文本