ygp@z
1. ܂܂Ăwb_t@CvWFNgtH_ɑSĒǉ
2. K\gꏊ"mercury/regex.h"CN[h
3. RXgN^ɐK\p^[n
4. match()ŊS}b`s


yt@Xz
\͊{Iɂ͒ʏ̐K\ƓłA܂쐬r̂߂Ȃ@\肳Ă܂B
ݗp\ȃ^͈ȉ̒ʂłB

 * ۃJbR()   FO[viJbR̃eO[vɂ܂Ƃ߂j
 * AX^XN*FʉiO̕orO[v0ȏJԂj
 * c_|        FIiÊ̕ꂩj


ygpz
////////////////////////////////////////////////////////////
// 1
#include <iostream>
#include "mercury/regex.h"

int main(void)
{
	// char^Ń}b`O
	const std::string pattern = "(a|bc)*d*e";
	const std::string text    = "abcde";

	const mercury::regex re(pattern);
	if(re.match(text))
	{
		std::cout << "}b`܂" << std::endl;
	}
	else
	{
		std::cout << "}b`܂ł" << std::endl;
	}
	return 0;
}


////////////////////////////////////////////////////////////
// 2
#include <iostream>
#include "mercury/regex.h"

int main(void)
{
	// wchar_t^󂯕t
	const std::wstring pattern = L"(a|bc)*d*e";
	const std::wstring text    = L"abcde";

	// wchar_t^wregexg
	// zƕnĂOK
	const mercury::wregex re(pattern.c_str(), pattern.length());
	if(re.match(text.c_str(), text.length()))
	{
		std::cout << "}b`܂" << std::endl;
	}
	else
	{
		std::cout << "}b`܂ł" << std::endl;
	}
	return 0;
}


////////////////////////////////////////////////////////////
// 3
#include <list>
#include <deque>
#include <iostream>
#include "mercury/regex.h"

int main(void)
{
	// f[^Zbĝʓ|ǁA̋CɂȂΔzstd::stringȊOłłȂƂ͂Ȃ
	typedef unsigned long utf32_t;
	typedef std::list <utf32_t> utf32_list_t;
	typedef std::deque<utf32_t> utf32_deque_t;

	utf32_list_t pattern;
	pattern.push_back('(');
	pattern.push_back('a');
	pattern.push_back('|');
	pattern.push_back('b');
	pattern.push_back('c');
	pattern.push_back(')');
	pattern.push_back('*');
	pattern.push_back('d');
	pattern.push_back('*');
	pattern.push_back('e');

	utf32_deque_t text;
	text.push_back('a');
	text.push_back('b');
	text.push_back('c');
	text.push_back('d');
	text.push_back('e');

	// char, wchar_tȊǑ^basic_regexg
	const mercury::basic_regex<utf32_t> re(pattern);    // Reî܂ܓnĂc
	if(re.match(text.begin(), text.end()))              // Ce[^nĂ
	{
		std::cout << "}b`܂" << std::endl;
	}
	else
	{
		std::cout << "}b`܂ł" << std::endl;
	}
	return 0;
}
