#include "langedge/win_support.hpp"
#include <iostream>
#include <string>
using namespace std;
#include "langedge/jre_util.hpp"
#include "langedge/remote_ptr.hpp"
using langedge::jregex::JRegexLoader;
using langedge::jregex::TheJRegexLoader;
using langedge::jregex::JRegexIF;
using langedge::jregex::JREMatchRange;
using langedge::jregex::JRECache;
using langedge::jregex::JREMatcher;
using langedge::jregex::JRegMatch;
using langedge::jregex::JRegSubst;
using langedge::RemotePtr;
#ifndef NDEBUG
#define DLL_PATH "..\\..\\..\\build\\win_debug\\bin\\lei_jregex.dll"
#else
#define DLL_PATH "..\\..\\..\\build\\win_release\\bin\\lei_jregex.dll"
#endif
void jregex_dll_path()
{
TheJRegexLoader::dllPath( DLL_PATH );
}
void jregex_sample_1()
{
JRegexLoader& jreLoader = TheJRegexLoader::getLoader();
RemotePtr<JRegexIF> pjre( jreLoader.createInstance( "foo" ) );
if (pjre->succeeded()) {
if (pjre->regexec( "a foo bar", 0 )) {
JREMatchRange rm = pjre->getMatchedRange( 0 );
cout << "match: [" << rm.begin << " - " << rm.end << "]" << endl;
}
}
}
void jregex_sample_2()
{
JRegexLoader& jreLoader = TheJRegexLoader::getLoader();
JRECache reCache( &jreLoader );
JRegexIF* pReg = reCache.regMatch( "foo\\s+bar", "hoge foo bar fuga!" );
if ( pReg ) {
cout << "begin: " << pReg->getMatchedRange(0).begin << endl;
cout << "end: " << pReg->getMatchedRange(0).end << endl;
cout << "length: " << pReg->getMatchedRange(0).length() << endl;
}
string result;
pReg = reCache.regSubst( "/foo/bar/ig", "foo Foo FOO!", result );
if ( pReg ) {
cout << "result: " << result << endl;
}
}
void jregex_sample_3()
{
JRegexLoader& jreLoader = TheJRegexLoader::getLoader();
JREMatcher matcher(&jreLoader);
if (matcher.match( "f\\w+o", "hoge foo bar fuga!" )) {
cout << "match: " << matcher[0] << endl;
}
if (matcher.match( "({a}f\\w+o)\\s+bar", "hoge foo bar fuga!" )) {
cout << "match[0]: " << matcher[0] << endl;
cout << "match[a]: " << matcher['a'] << endl;
}
}
void jregex_sample_4()
{
JRegexIF* pReg = JRegMatch( "foo\\s+bar", "hoge foo bar fuga!" );
if ( pReg ) {
cout << "begin: " << pReg->getMatchedRange(0).begin << endl;
cout << "end: " << pReg->getMatchedRange(0).end << endl;
cout << "length: " << pReg->getMatchedRange(0).length() << endl;
}
string result;
pReg = JRegSubst( "/foo/bar/ig", "foo Foo FOO!", result );
if ( pReg ) {
cout << "result: " << result << endl;
}
}
int main()
{
jregex_dll_path();
jregex_sample_1();
jregex_sample_2();
jregex_sample_3();
jregex_sample_4();
return 0;
}