【问题标题】:Regexp to match three patterns正则表达式匹配三种模式
【发布时间】:2015-03-12 12:19:18
【问题描述】:

我有一个字符串数组,其中元素可以是以下模式之一:

  • 网址www.example.com
  • 标签#followback
  • 正常currentratesoughttogodown

根据输出 examplefollowbackcurrentratesoughttogodown 创建。

我当前的正则表达式

(?<=www.|\\#)(\\w+)(?=\\.)?

在 Java 中匹配 www.example.com#followback,但在 C++ 中不匹配,因为 C++ 不支持后视。

如何在 c++ 中匹配这三种模式?

【问题讨论】:

  • 你好。我以更清晰的方式格式化了您问题中的文本。起初我不确定你是想创建这些字符串还是匹配它们。尽可能直截了当,并确保你有一个清晰、简单、简洁的问题在文本中脱颖而出

标签: c++ regex


【解决方案1】:

您可以改用捕获组。像这样,您的字符串将驻留在第一个捕获组中:

smatch sm1;
string s1("www.example.com");
regex_search(s1, sm1, regex("^(?:www\\.|\\#)?(.+?)(?:\\.[^.]+?)?$"));
cout << sm1[1] << endl;

C++ regex string capture

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多