delphi 关于 TRegEx.Split()

2018-10-31

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;
--------------------------------------------------------------------------------


阅读65