如何在c++中成对显示regex输出
How to show regex output in pair in c++?
我不知道这是否有意义,但它就在这里
有没有一种方法可以让我每次从正则表达式结果中获得两个单词
supose我有一个文本文件,其中包含如下字符串:
Alex Fenix是一名工程师,在福特汽车公司工作。他的个人ID是<123456>;等等…
基本上,如果我使用w
,我会得到一个列表:
Alex
Fenix
is
an
Engineer
and etc
它们都用空格和标点符号隔开我想问的是,是否有一种方法可以列出这样的列表:
Alex Fenix
is an
Engineer who
works for
Ford Automotive
Company His
Personal ID
is 123456
如何实现这样的格式
这可能吗?或者我应该把第一个结果存储在一个数组中,然后遍历它们并创建第二个列表吗
顺便说一句,请注意,Alex Fenix项目实际上是地图或任何类似容器的抽象
我问这个问题的原因是,我想看看是否有任何方法可以直接读取一个文件,并在上面应用regex,然后在没有任何进一步处理开销的情况下获得第二个列表(我的意思是读取一个映射或字符串,然后遍历它们,创建成对的令牌,然后继续执行所需的操作)
尝试此regex
w w
它将匹配任何后面跟着空格的单词和另一个单词。
尽管您可以在不使用regex的情况下相对容易地实现这样的格式。举个例子:
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
int main() {
std::string s("Alex Fenix is an Engineer who works for Ford Automotive Company. His Personal ID is <123456>");
// Remove any occurences of '.', '<' or '>'.
s.assign(begin(s), std::remove_if(begin(s), end(s), [] (const char c) {
return (c == '.' || c == '<' || c == '>');
}));
// Tokenize.
std::istringstream iss(s);
std::string t1, t2;
while (iss >> t1 >> t2) {
std::cout << t1 << " " << t2 << std::endl;
}
}
输出:
Alex Fenix
is an
Engineer who
works for
Ford Automotive
Company His
Personal ID
is 123456
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 此模式的C++RegEx
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 如何在c++中成对显示regex输出