必须 uses RegularExpressions; //相关单元
以下大部分都引自万一博客。
TRegEx.Split() // 使用正则表达式切割字符串;
********************************************************************************
const
// 分隔符将有三部分构成: 一个数字, 一个冒号, 一个空格
FSourceText = '1: AAA 2: BBB 3: CCC';
var
Arr: TArray;
str: string;
procedure TForm1.Button1Click(Sender: TObject);
begin
Arr := TRegEx.Split(FSourceText, '\d: '); // 用\d数字和冒号:外加空格的组合来切割上面的字符串。
//如果上面的语句修改为:
//Arr := TRegEx.Split(FSourceText, '(\d): '); //括号中的部分被当做分割后的元素//如果有两个括号, 取后面括号的内容做元素,前面的括号无效,如:'(\d)(:)( )'只取空格,'(\d)(:) '则只取冒号;
//则得到结果2.
Memo1.Clear;
for str in Arr do
Memo1.Lines.Add(str);
{ 得到的结果1:
AAA
BBB
CCC
}
{ 得到的结果2:
1
AAA
2
BBB
3
CCC
}
end;
============================================================
TRegEx.IsMatch //匹配字符串是否相符;
****************************************************
const pattern = '[A-Z]+\d+'; //测试用的表达式
txt = 'AAA1 BBB2 AA11 BB22 A111 B222 AAAA'; //测试用的目标文本
{是否匹配成功}
procedure TForm1.Button1Click(Sender: TObject);
begin
if TRegEx.IsMatch(txt, pattern) then
begin
ShowMessage('有匹配到');
end;
end;
============================================================
使用TRegEx.IsMatch 匹配获取第一个匹配结果
***************************************************************
procedure TForm1.Button2Click(Sender: TObject);
var match: TMatch;
begin
match := TRegEx.Match(txt, pattern);
if match.Success then //或用一句话 if TRegEx.Match(txt, pattern).Success then
begin
ShowMessage(match.Value); //AAA1 ,使用 match.Value 获取结果。
end;
end;
============================================================