delphi 关于 TRegEx.Split()
表达式中的括号将严重影响分割结果.
--------------------------------------------------------------------------------
uses RegularExpressions;
const
FSourceText = '1: AAA 2: BBB 3: CCC'; // 分隔符将有三部分构成: 一个数字, 一个冒号, 一个空格
var
Arr: TArray;
str: string;
procedure TForm1.Button1Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '\d: ');
Memo1.Clear;
for str in Arr do Memo1.Lines.Add(str);
{结果:
AAA
BBB
CCC
}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '(\d): '); //括号中的部分被当做分割后的元素
Memo1.Clear;
for str in Arr do Memo1.Lines.Add(str);
{
1
AAA
2
BBB
3
CCC
}
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '(\d:) '); // 证实上面
Memo1.Clear;
for str in Arr do Memo1.Lines.Add(str);
{
1:
AAA
2:
BBB
3:
CCC
}
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '(\d)(:) '); // 如果有两个括号, 取后面括号的内容做元素
Memo1.Clear;
for str in Arr do Memo1.Lines.Add(str);
{
:
AAA
:
BBB
:
CCC
}
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '(\d)(:)( )'); // 证实上面
Memo1.Clear;
for str in Arr do Memo1.Lines.Add(str);
{
AAA
BBB
CCC
}
end;
--------------------------------------------------------------------------------