using System;
using System.Text .RegularExpressions ;
class program
{
static void Main( string[ ] args)
{
string text = txt( ) ;
string pattern = @"t$" ;
Regex reg = new Regex( pattern) ;
MatchCollection m = reg.Matches ( text) ;
show( reg, m) ;
}
static void show( Regex reg, MatchCollection m)
{
Console.WriteLine ( " # of matches is : {0} " , m.Count ) ;
foreach( Match match in m)
{
Console.WriteLine ( "value : {0}\n " , match.Value ) ;
for ( int groupCtr = 0 ; groupCtr < match.Groups .Count ; groupCtr++ )
{
Group group = match.Groups [ groupCtr] ;
Console.WriteLine ( " Group {0}: {1}" , groupCtr, group.Value ) ;
for ( int captureCtr = 0 ; captureCtr < group.Captures .Count ; captureCtr++ )
Console.WriteLine ( " Capture {0}: {1}" , captureCtr,
group.Captures [ captureCtr] .Value ) ;
}
}
}
static int finds( string text, string pattern)
{
return 0 ;
}
static string txt( )
{
string text = "A string is an object of type String whose value is text. Internally, the text is stored as a sequential read-only collection of Char objects. There's no null-terminating character at the end of a C# string; therefore a C# string can contain any number of embedded null characters ('\0 '). The Length property of a string represents the number of Char objects it contains, not the number of Unicode characters. To access the individual Unicode code points in a string, use the StringInfo object" ;
return text;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpjbGFzcyBwcm9ncmFtCnsKc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQp7CnN0cmluZyB0ZXh0ID0gdHh0KCk7CnN0cmluZyBwYXR0ZXJuID0gQCJ0JCI7ClJlZ2V4IHJlZyA9IG5ldyBSZWdleChwYXR0ZXJuKTsKTWF0Y2hDb2xsZWN0aW9uIG0gPSByZWcuTWF0Y2hlcyh0ZXh0KTsKc2hvdyhyZWcsbSk7Cn0KCnN0YXRpYyB2b2lkIHNob3coUmVnZXggcmVnLCBNYXRjaENvbGxlY3Rpb24gbSkKewpDb25zb2xlLldyaXRlTGluZSgiICAjIG9mIG1hdGNoZXMgaXMgOiB7MH0gIixtLkNvdW50KTsKZm9yZWFjaChNYXRjaCBtYXRjaCBpbiBtKQp7CkNvbnNvbGUuV3JpdGVMaW5lKCJ2YWx1ZSA6IHswfVxuIiwgbWF0Y2guVmFsdWUpOwoKCmZvciAoaW50IGdyb3VwQ3RyID0gMDsgZ3JvdXBDdHIgPCBtYXRjaC5Hcm91cHMuQ291bnQ7IGdyb3VwQ3RyKyspCiAgICAgICAgIHsKICAgICAgICAgICAgR3JvdXAgZ3JvdXAgPSBtYXRjaC5Hcm91cHNbZ3JvdXBDdHJdOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiICAgR3JvdXAgezB9OiB7MX0iLCBncm91cEN0ciwgZ3JvdXAuVmFsdWUpOwogICAgICAgICAgICBmb3IgKGludCBjYXB0dXJlQ3RyID0gMDsgY2FwdHVyZUN0ciA8IGdyb3VwLkNhcHR1cmVzLkNvdW50OyBjYXB0dXJlQ3RyKyspCiAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCIgICAgICBDYXB0dXJlIHswfTogezF9IiwgY2FwdHVyZUN0ciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLkNhcHR1cmVzW2NhcHR1cmVDdHJdLlZhbHVlKTsKfQoKfQp9CnN0YXRpYyBpbnQgZmluZHMoc3RyaW5nIHRleHQsIHN0cmluZyBwYXR0ZXJuKQp7CnJldHVybiAwOwp9CgpzdGF0aWMgc3RyaW5nIHR4dCgpCnsKCnN0cmluZyB0ZXh0ID0gIkEgc3RyaW5nIGlzIGFuIG9iamVjdCBvZiB0eXBlIFN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0ZXh0LiBJbnRlcm5hbGx5LCB0aGUgdGV4dCBpcyBzdG9yZWQgYXMgYSBzZXF1ZW50aWFsIHJlYWQtb25seSBjb2xsZWN0aW9uIG9mIENoYXIgb2JqZWN0cy4gVGhlcmUncyBubyBudWxsLXRlcm1pbmF0aW5nIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIGEgQyMgc3RyaW5nOyB0aGVyZWZvcmUgYSBDIyBzdHJpbmcgY2FuIGNvbnRhaW4gYW55IG51bWJlciBvZiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMgKCdcMCcpLiBUaGUgTGVuZ3RoIHByb3BlcnR5IG9mIGEgc3RyaW5nIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBDaGFyIG9iamVjdHMgaXQgY29udGFpbnMsIG5vdCB0aGUgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4gVG8gYWNjZXNzIHRoZSBpbmRpdmlkdWFsIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gYSBzdHJpbmcsIHVzZSB0aGUgU3RyaW5nSW5mbyBvYmplY3QiOwpyZXR1cm4gdGV4dDsKfQp9