RegExSplit
The function RegExSplit looks for a match to the pattern specified by aExpression in the string aInput, and returns the matched characters in the TStringList aPieces - depending on the value specified by aExpression.
Where the pattern matches, a boolean True value will be returned indicating that a match was found. False will be returned where no match was found.
Declaration: Function RegExSplit(const aExpression, aInput: String; aPieces : TStringList): boolean;
Several examples follow.
procedure
ScriptEvent(
var
Value:Variant);
var
Str1, Str2 :
string
;
MyOut1 : TStringList;
Int6 :=
integer
;
begin
Str1 :=
'a'
;
Str2 :=
'banana'
;
MyOut1 := TStringList
.
create;
//Returns TRUE - MyOut output string list contains three items
//"a", "a", and "a" being the 3 matches when the pattern is repeated across the entire string
RegExSplit(Str1, Str2, MyOut1);
For
Int6 :=
0
to
MyOut1
.
count-
1
do
Loginfo(MyOut1[Int6]);
LogInfo(
''
);
//Returns TRUE - MyOut output string list contains three items
//"a", "a", and "a" being the 3 matches when the pattern is repeated across the entire string
MyOut1
.
clear;
If
RegExSplit(
'a'
,
'banana'
,MyOut1)
then
LogInfo(
'Yes!'
)
else
LogInfo(
'No . . . '
);
MyOut1
.
clear;
RegExSplit(
'a'
,
'banana'
, MyOut1);
For
Int6 :=
0
to
MyOut1
.
count-
1
do
Loginfo(MyOut1[Int6]);
LogInfo(
''
);
MyOut1
.
clear;
//Returns TRUE and MyOut string list contains two items: single digits "6" and "6"
RegExSplit(
'\d'
,
'Route 66'
,MyOut1)
For
Int6 :=
0
to
MyOut1
.
count-
1
do
Loginfo(MyOut1[Int6]);
LogInfo(
''
);
MyOut1
.
clear;
//Pattern "\d+" matches 1 or more consecutive digits
//Function returns TRUE and sets MyOut output string list to "66"
RegExSplit(
'\d+'
,
'Route 66'
,MyOut1)
For
Int6 :=
0
to
MyOut1
.
count-
1
do
Loginfo(MyOut1[Int6]);
LogInfo(
''
);
MyOut1
.
clear;
//Returns TRUE and output string list MyOut contains "555", "123", and "456"
//YES, even "456" - because there are 3 consecutive digits at that point in the string
RegExSplit(
'\d{3}'
,
'+1-555-123-4567'
,MyOut1)
For
Int6 :=
0
to
MyOut1
.
count-
1
do
Loginfo(MyOut1[Int6]);
LogInfo(
''
);
end
;