使用正則表示式列印每個單詞首字母的 C++ 程式


正則表示式 (regex) 是一個用於字串操作的有用工具。它幾乎存在於所有現代高階程式語言中,包括 C++。正則表示式用作通用的搜尋模式。例如,透過構造一個簡單的稱為正則表示式的字串,我們可以實現密碼驗證邏輯,該邏輯至少包含一個大寫字母、一個小寫字母、一個數字、一個特殊字元以及至少 8 個字元的總長度。

在本教程中,我們將學習如何使用 C++ 來僅顯示指定字串中包含的單詞的首字母。在這裡,我們將看到一個使用空格分隔單詞的句子。無論字元是大寫還是小寫,計算機都將讀取字串,使用正則表示式將其分割,並返回每個單詞的第一個字元。

要使用正則表示式,我們需要使用 `regex` 標頭檔案匯入 `regex` 庫。要使用正則表示式,我們需要以下語法:

語法(建立正則表示式物件)

regex obj_name( <regular expression> )

定義正則表示式後,我們可以透過多種方式使用它們。我們將在下面看到我們想要的方法。現在,要讀取單詞中的第一個字元,正則表示式語法將如下所示:

語法(讀取單詞的第一個字元)

\b[a-zA-Z]

這裡 `\b` 表示單詞的開頭。`[a-zA-Z]` 表示範圍為 'a' 到 'z' 或 'A' 到 'Z' 的大寫或小寫字母,並且只取其中一個。現在讓我們看看用於讀取所有選定匹配項的迭代器物件:

語法(正則表示式迭代器)

regex_token_iterator<string::iterator> iterator_name( <begin pointer of string>, <ending pointer of string>, <regular expression>, <submatch>);

在此迭代器中,前兩個引數是字串物件的開始和結束指標。第三個引數是之前建立的給定正則表示式物件。第四個引數是子匹配項。當子匹配項為 0 時,它將返回來自匹配項(匹配位置)的元素;當子匹配項為 -1 時,它表示未匹配的位置(子匹配項 0 模式相反)。

演算法

  • 將字串 s 作為輸入
  • 使用 '\b[a-zA-Z]' 定義正則表示式
  • 使用表示式對 s 進行匹配
  • 定義一個迭代器物件以僅讀取這些匹配項
  • 對於迭代器物件中的每個專案,執行以下操作:
    • 顯示專案
  • 結束迴圈

示例

#include <iostream>
#include <regex>
using namespace std;
string solve( string s){
   string ret = "";
   regex e("\b[a-zA-Z]");
   regex_token_iterator<string::iterator> i(s.begin(), s.end(), e, 0);
   regex_token_iterator<string::iterator> end;
   while (i != end) {
      ret += (*i++);
      ret += ", ";
   }
   return ret;
}
int main(){
   string s = "A string to read only the first letter of words";
   cout << "Given String: " << s << endl;
   cout << "The first letter of each word: " << solve( s ) << endl;
   s = "Central Pollution Control Board";
   cout << "Given String: " << s << endl;
   cout << "The first letter of each word: " << solve( s ) << endl;
}

輸出

Given String: A string to read only the first letter of words
The first letter of each word: A, s, t, r, o, t, f, l, o, w, 
Given String: Central Pollution Control Board
The first letter of each word: C, P, C, B, 

結論

正則表示式用於在字串中匹配常見模式。正則表示式庫 (regex) 可用於所有高階語言,包括 Java、Python、Javascript、Dart 和 C++。它有許多應用。本文定義了一個讀取每個單詞第一個字元的正則表示式。我們需要一個迭代器物件,它逐個讀取每個匹配字元。

更新於:2022年12月14日

412 次檢視

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.