RegExp

STL tidak hanya menyediakan struktur penyimpanan sekumpulan data. Ada beberapa template lain yang terdapat di dalam STL. Salah satunya adalah regex yang memungkinkan kita untuk menggunakan regular expression. Untuk menggunakan regex kalian perlu menyertakan header <regex>. Pola yang digunakan untuk regular expression bisa dibuat dengan class regex.

Regex_replace 

Regex bisa digunakan untuk mengubah beberapa kata yang sama polanya seperti contoh di bawah ini.
#include <iostream>
#include <regex>
 
using namespace std;
int main(){
    string s = "Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.";
    cout << "Asli :" << s << endl;
    regex *rx=new regex("(\\w{5,})");
    string hasil = regex_replace(s, *rx, "[$&]");
    delete rx;
    
    rx=new regex("(Saya)");
    hasil = regex_replace(hasil, *rx, "(Kamu)");
    delete rx;
    
    cout << "Hasil : " << hasil << '\n';
}
Output :
Asli :Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.
Hasil : (Kamu) [bukan] [dokter]. (Kamu) juga [bukan] [profesor]. (Kamu) cuma [orang] [biasa].

Contoh di atas menggunakan regex_replace untuk mengganti beberapa kata. Regular expression adalah bisa digunakan untuk perbandingan atau pencarian berdasarkan pola tertentu.

Perbandingan dengan Match

Selain mengganti isi string berdasarkan pola dengan regex_replace, kalian juga bisa melakukan perbandingan dengan function regex_match. 

#include <iostream>
#include <regex>
 
using namespace std;
int main()
{
    string s = "Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.";
    cout << "Teks :" << s << endl;
    regex *rx=new regex("(Saya)(.*)");
    if(regex_match(s, *rx)){
    	cout << "Ada yang sama dengan \"saya\"";
    }
    delete rx;
}
Output :
Teks :Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.
Ada yang sama dengan "saya"

Function regex_match akan mengembalikan nilai true jika pola kalimat sama dengan pola dalam regex.

Iterator dan Search

Pencarian dengan regex bisa dilakukan dengan function regex_search. Kalian bisa melihat hasilnya dengan iterator. Iterator regex sama dengan iterator container STL yang lain. Kalian bisa menggunakan auto atau ::iterator.
#include <iostream>
#include <regex>

using namespace std;
int main ()
{
  string s ("Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.");
  smatch m;
  regex e ("\\b(say)([^ ]*)", regex::icase);   // cari kata berawalan say.

  cout << "Teks : " << s << endl;
  cout << "Regular expression : /\\b(say)([^ ]*)/" << endl;
  cout << "Hasil:" << endl;

   //Tampilkan kata dan potongannya
  regex_search (s,m,e);
  for (auto x:m) cout << x << " ";
  cout << endl;

  return 0;
}
Output :
Teks : Saya bukan dokter. Saya juga bukan profesor. Saya cuma orang biasa.
Regular expression : /\b(say)([^ ]*)/
Hasil:
Saya Say a