表达式中的括号将严重影响分割结果.
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;