VC++ の関数の 1 つで正規表現を使用しています。ここに私のコードファイルがあります:
#include "stdafx.h"
#include<regex>
#include<iostream>
#include<string>
using namespace std;
void test_regex_search(const std::string& input)
{
std::cout << " Initial string = " << input <<endl;
std::regex rgx("(^|\\W)\\d+([a-zA-Z]*)?[\\\-\\\\]?(\\d*)([a-zA-Z]*)?");
std::smatch match;
char start[200] = {0};
std::string repalcewith("");
if (std::regex_search(input.begin(), input.end(), match, rgx))
{
std::cout << "match[0] = " << match[0]<< '\n';
std::cout << "match[1] = " << match[1] << '\n';
}
else
std::cout << "No match\n";
std::regex_replace(&start[0],input.begin(),input.end(),rgx,repalcewith);
std::cout << "final string = "<<start << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
test_regex_search("HIGH STREET 4323HTY KM3.5 WINES ");
return 0;
}
実行後、出力は次のように表示されます: 最終文字列 = HIGH STREET KM3 WINES
この特定の単語「KM3.5」の場合、正規表現が「.」を認識しないのに、最終文字列が「KM3」になるのはなぜですか? 「。」を扱っていますか?スペースとして、またはこの理由の適切な理由となる可能性があるもの。よろしくお願いします