首頁 > 後端開發 > C++ > 如何使用 C 的 std::regex 來匹配字串中的所有單字?

如何使用 C 的 std::regex 來匹配字串中的所有單字?

Mary-Kate Olsen
發布: 2024-12-11 08:54:09
原創
749 人瀏覽過

How Can I Match All Words in a String Using C  's std::regex?

使用std::regex 來匹配多個結果

本文討論了一種場景,其中用戶嘗試使用以下命令來匹配給定字串中的每個單字C 標準函式庫正規表示式引擎(std::regex)。使用者使用正規表示式模式「(bS*b)」來實現此目的,但遇到了意外行為。

問題

提供的初始正規表示式模式,「( bS*b)",封裝由單字邊界(b) 和非空白字元(S) 界定的單字。但是,當與 regex_search 函數結合使用時,此模式無法考慮輸入字串中的多個潛在匹配項。

解決方案

要解決此問題,方法是在連續應用 regex_search 的同時需要迭代輸入字串。這確保了可以檢測和捕獲所有匹配項。下面修改後的程式碼示範了這個方法:

{
    regex exp("(\b\S*\b)");
    smatch res;
    string str = "first second third forth";

    string::const_iterator searchStart( str.cbegin() );
    while ( regex_search( searchStart, str.cend(), res, exp ) )
    {
        cout << ( searchStart == str.cbegin() ? "" : " " ) << res[0];
        searchStart = res.suffix().first;
    }
    cout << endl;
}
登入後複製

在此修改後的程式碼中,迭代器 searchStart 被初始化為輸入字串的開頭。 regex_search 函數被迭代調用,其中 searchStart 作為搜尋起始位置。如果找到匹配項,則列印匹配項,並將 searchStart 調整到匹配文字後面的位置。此過程一直持續到找不到更多匹配項為止。

以上是如何使用 C 的 std::regex 來匹配字串中的所有單字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板