TRegEx is a useful class for regular expression. You can define a instance with a regular expression, and match the case by TMatch. If the case exists, the search can be continued by TMatch.NextMatch.Following is a example to search XML tag by TRegEx and TMatch
uses System.RegularExpressions . . . function getXMLTagValue(source, tag:string):string; var mRegExp: TRegEx; match: TMatch; begin mRegExp := TRegEx.Create( '<' + tag + '>(.*)</' + tag + '>', [roIgnoreCase,roMultiline]); match := mRegExp.Match( source); if match.Success then begin Result := match.Groups.Item[1].Value; end else begin Result := ''; end; end;
Below example continuously search the case as long as the result exists
procedure FindSomething(const searchMe : string); var regexpr : TRegEx; match : TMatch; group : TGroup; i : integer; begin // create our regex instance, and we want to do a case insensitive search, in multiline mode regexpr := TRegEx.Create('^.*\b(\w+)\b\sworld',[roIgnoreCase,roMultiline]); match := regexpr.Match(searchMe); if not match.Success then begin WriteLn('No Match Found'); exit; end; while match.Success do begin WriteLn('Match : [' + match.Value + ']'; //group 0 is the entire match, so count will always be at least 1 for a match if match.Groups.Count > 1 then begin for i := 1 to match.Groups.Count -1 do WriteLn(' Group[' + IntToStr(i) + '] : [' + match.Groups.Item[i].Value + ']'; end; match := match.NextMatch; end; end;