
一、查找StartStr开始和EndStr结束之间的字符串(完整取出)
uses
System.SysUtils, System.RegularExpressions;
function ExtractSelectContent(const Input,StartStr,EndStr: string): string;
implementation
function ExtractSelectContent(const Input,StartStr,EndStr: string): string;
var
Regex: TRegEx;
Match: TMatch;
begin
// 创建正则表达式对象,忽略大小写
Regex := TRegEx.Create(StartStr + '(.*?)' + EndStr, [roIgnoreCase]);
// 执行匹配
Match := Regex.Match(Input);
// 检查是否匹配成功
if Match.Success then
// 返回第一个捕获组的内容(即SELECT和FROM之间的部分)
Result := Match.Groups[1].Value
else
Result := '';
end;
注意:
StartStr之后和EndStr之前如果有空格,返回的字符串也会把空格取出。
举例:
Input := "A 1234 B"
StartStr := "A"
EndStr := "B";
结果:空格123空格
二、查找StartStr开始和EndStr结束之间的字符串(去除空格)
function ExtractSelectContent(const Input, StartStr,EndStr: string): string;
var
Regex: TRegEx;
Match: TMatch;
Patten : string;
begin
// 正则表达式说明:
// SELECT\s+ 匹配"SELECT"后跟一个或多个空格
// (.*?) 非贪婪匹配中间内容
// \s+FROM 匹配一个或多个空格后跟"FROM"
// roIgnoreCase 忽略大小写
Patten := StartStr + '\s+(.*?)\s+' + EndStr;
Regex := TRegEx.Create(Patten, [roIgnoreCase]);
// 执行匹配
Match := Regex.Match(Input);
// 检查是否匹配成功
if Match.Success then
// 返回第一个捕获组的内容(即SELECT和FROM之间的部分)
Result := Match.Groups[1].Value
else
Result := '';
end;
注意:
上述函数会自动压缩StartStr之后的空格,EndStr之前的空格!
举例:
Input := "A 1234 B"
StartStr := "A"
EndStr := "B";
结果:123
2万+

被折叠的 条评论
为什么被折叠?



