使用正則表示式列印每個單詞首字母的 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++。它有許多應用。本文定義了一個讀取每個單詞第一個字元的正則表示式。我們需要一個迭代器物件,它逐個讀取每個匹配字元。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP