diff --git a/WordPicker.cpp b/WordPicker.cpp index caaecea..060fa16 100644 --- a/WordPicker.cpp +++ b/WordPicker.cpp @@ -131,7 +131,7 @@ vector ReadWords(DictType type) ////////////////////////////////////////////////////////////////////////// /// -void MatchPatterns(const vector& in_Words) +void FindWordNumberPatterns(const vector& in_words) { static const vector digits = { L"н", L"к", L"л", L"т", L"ч", L"п", L"[шщ]", L"с", L"в", L"д" }; static const int count = digits.size(); @@ -159,7 +159,7 @@ void MatchPatterns(const vector& in_Words) // Words with first two consonant letters equal to selected wregex mask(vowels + L"*" + digits[i] + vowels + L"*" + digits[j] + L".*"); - for (const auto& word : in_Words) + for (const auto& word : in_words) { if (regex_match(word, mask)) { @@ -172,6 +172,24 @@ void MatchPatterns(const vector& in_Words) } } +////////////////////////////////////////////////////////////////////////// +/// +void MatchPattern(const vector& in_words, const std::wstring& in_str) +{ + // Words with first two consonant letters equal to selected + wregex mask(in_str); + + wcout << L"Слова по регулярному выражению \"" << in_str << L"\":" << endl; + + for (const auto& word : in_words) + { + if (regex_match(word, mask)) + { + wcout << word << endl; + } + } +} + ////////////////////////////////////////////////////////////////////////// /// int _tmain(int argc, _TCHAR* argv[]) @@ -184,7 +202,14 @@ int _tmain(int argc, _TCHAR* argv[]) // Initialize words list auto words = ReadWords(DictType::OpenOffice); - MatchPatterns(words); + if (argc < 2) + { + FindWordNumberPatterns(words); + } + else + { + MatchPattern(words, argv[1]); + } } catch (std::exception&) {