当前位置: 首页 > 知识库问答 >
问题:

我需要一个正则表达式,以便在C++中标记引号中的多个单词

景鹏飞
2023-03-14

我有一个输入文件要标记化。课文是这样的:

MATERIAL  "A992Fy50"    TYPE "Steel"    GRADE "Grade 50"    WEIGHTPERVOLUME 0.007849048

棘手的部分是获得“50级”作为一个单字。有没有人建议在C++中使用正则表达式。我知道如何在引号中不加空格:

   const std::string text{"MATERIAL  \"A992Fy50\"    TYPE \"Steel\"    GRADE \"Grade 50\"    WEIGHTPERVOLUME 0.007849048"};
    const std::regex ws_re{"\(\")?(\\s+)\(\")?"}; // whitespace
    std::copy( std::sregex_token_iterator(text.begin(), text.end(), ws_re, -1),
               std::sregex_token_iterator(),
               std::ostream_iterator<std::string>(std::cout, "\n"));

但这也将“50级”拆分为50级和50级。

共有1个答案

师博
2023-03-14

我有个问题。

我知道,我会用正则表达式解决它!

我现在有两个问题;我原来的问题,和正则表达式

备选方案:

>

  • 将字符串拆分为引号分隔的短语。使用std::string_view::find,返回结构短语{bool quartered;std::string_view str;};的向量

    用空格将无引号的短语向上折断。

    你就完蛋了。

    添加诸如转义引号或空格之类的新内容很容易,而且您的代码是一堆C++而不是只写的正则表达式,具有未知的运行时复杂性。

    Regex非常适合在人工监督下进行快速的一次性搜索和替换,但对于任何重要的事情,我都避免使用if。

  •  类似资料:
    • 我是新的Sublime的文本,但开始喜欢在它的工作。 我使用它的搜索和替换来实现如下: 我有一个清单,上面有数百个项目,如下所示: 但我想用 所以基本上冒号和单词应该用连字符(-)符号代替 我尝试了几个正则表达式。例如:(?)? 但事情并不顺利。

    • 我的输入只能有两个值或。我可以使用什么正则表达式来确保这两个单词中的任何一个都已提交?

    • 我想写一个正则表达式(C#),可以匹配没有引号的单词。输入字符串示例如下: dbo.testline_length"引用的话"不引用 这个需要匹配 dbo.test line_length 无报价 因此,3个单独的匹配和“引用的单词”不匹配。引用的短语可能在输入中的任何地方。。。开头、中间、结尾等。 我还没能想出一个正则表达式来匹配不在引号中的单词,引号中可能有空格。。。我已经能够匹配一些东西,比

    • 有没有一种方法使组的“capture”可以在regex后面引用,但其捕获的值不在匹配列表中返回? 或者其他一些方法来解决我(看似简单)的问题。

    • 问题内容: 我写了一个正则表达式,用double-qoutes分割字符串: 如何将其扩展为与单双qoutes一起使用? 我试过了: 但这是行不通的 问题答案: 有两种方法: