TMatchCollectionCount (Delphi)
Description
This example demonstrates the use of TMatchCollection and TGroupCollection. This example assumes that you have placed a TButton, a TEdit and a TMemo on a form.
Code
var
Form1: TForm1;
mycoll: TMatchCollection;
myenum: TMatchCollectionEnumerator;
implementation
{$R *.dfm}
// Creates and lists the match collection, the matches in that
// collection and the groups in those matches.
procedure TForm1.Button1Click(Sender: TObject);
const
bigString = 'Look for a the strings in this strang of strungs.';
littlestring = '(str)([iau]ng)';
var
regex: TRegEx;
i, j: integer;
mygrps: TGroupCollection;
begin
regex:= TRegEx.Create(littlestring);
mycoll:= regex.Matches(bigString);
Edit1.Text:= 'Count: ' + IntToStr(mycoll.Count);
memo1.Lines.Add('First Collection: ');
for i := 0 to mycoll.Count-1 do
begin
memo1.Lines.Add('Match #' + IntToStr(i) + ': ' + mycoll.Item[i].Value);
memo1.Lines.Add('Group: ' + IntToStr(i));
mygrps:= mycoll.Item[i].Groups;
for j := 0 to mygrps.Count-1 do
memo1.Lines.Add('Value: ' + mygrps.Item[j].Value);
end;
end;
// Moves the enumerator to the next member of the collection.
// Create the match collection and set the enumerator first.
// MoveNext only moves to the last, does not wrap to the first.
procedure TForm1.Button2Click(Sender: TObject);
begin
myenum.MoveNext;
end;
// Sets the enumerator in the current match collection.
procedure TForm1.Button3Click(Sender: TObject);
begin
myenum:= mycoll.GetEnumerator;
end;
// Create a different match collection.
//Note that MoveNext and Current work on the old match collection
// until the enumerator is set.
procedure TForm1.Button4Click(Sender: TObject);
const
bigString = 'Look for a the strings.';
littlestring = 'str[iau]ng';
var
regex: TRegEx;
i: integer;
begin
regex:= TRegEx.Create(littlestring);
mycoll:= regex.Matches(bigString);
Edit1.Text:= 'Count: ' + IntToStr(mycoll.Count);
for i := 0 to mycoll.Count-1 do
memo1.Lines.Add('Second collection: ' + mycoll.Item[i].Value);
end;
// Displays the current match of the collection.
// Current does not work unit the match collection is created,
// the enumeration is set and MoveNext sets the index to the first member.
procedure TForm1.Button5Click(Sender: TObject);
begin
memo1.Lines.Add('Enum current: ' + myenum.Current.Value);
end;
Uses
- System.RegularExpressions.TMatchCollection.Count ( fr | de | ja )
- System.RegularExpressions.TMatchCollection.Item ( fr | de | ja )
- System.RegularExpressions.TMatch.Value ( fr | de | ja )
- System.RegularExpressions.TGroupCollection.Count ( fr | de | ja )
- System.RegularExpressions.TGroupCollection.Item ( fr | de | ja )
- System.RegularExpressions.TGroup.Value ( fr | de | ja )
- System.RegularExpressions.TRegEx.Matches ( fr | de | ja )
- System.RegularExpressions.TMatch.Groups ( fr | de | ja )