The 35th Developer camp will be held in Japan on March 15, 2018.
The venue is Tokyo Akihabara UDX GALLERY NEXT.
C++Builder 10.2.2 is one of the merits of being able to use RTL and STL.
For RTL, the classes on Regular expressions are TRegEx, TPerlRegEx.
But, since std::regex
of STL can also be used, I set the target device to iOS this time and tried it.
I tried four patterns.The pattern is numbers, hiragana-Japanese, ASCII and e-mail.
C++Builder 10.2.2 code
#include <string>
#include <regex>
#include <functional>
#include <vector>
#include <tuple>
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
std::vector<std::tuple<std::wstring, std::wstring> > v1{
//When you want to match numbers.
{L"\\d+", L"regex_match(\"\\d+\",%s)"},
//When you want to match Hiragana-Japanese.
{L"^[\u3040-\u309F]+$", L"regex_match(\"^[\u3040-\u309F]+$\",%s)"},
//When you want to match ASCII Code.
{L"^[\x20-\x7E]+$", L"regex_match(\"^[\x20-\x7E]+$\",%s)"},
//Determine whether the wstring is in E-mail format.
{L"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$", L"regex_match(E-Mail,%s)"}
std::function<std::wstring(UnicodeString)> str_towstr{[](UnicodeString linp)
{
std::wstring out
for (int i=0 i < linp.Length i++) {
#ifndef _WIN64
out +=linp[i
#else /* _WIN64 */
out +=linp[i+1
#endif
}
return out
}
//It was selected in the ComboBox1, the content you want to match.
std::wregex wregex1(std::get<0>(v1[ComboBox1->ItemIndex]).c_str());
//The string you want to match, and assigned to the wstring.
std::wstring in_str = str_towstr(Edit1->Text
UnicodeString l_value = Format(std::get<1>(v1[ComboBox1->ItemIndex]).c_str(), ARRAYOFCONST((Edit1->Text))
//It is judged here. Use regex_match.
if (std::regex_match(in_str, wregex1))
{
//If the regex_match was successful.
Memo1->Lines->Append("Successful " + l_value
Edit1->Text = L""
}
else
{
//If the regex_match failed.
Memo1->Lines->Append("NO " + l_value
}
Button1->SetFocus
}
Select a pattern in ComboBox1, enter a character string in Edit1, and tap SpeedButton1.
If a pattern match is found, Successful is displayed in Memo1.