【Delphi】正则实现查找某字符串开始和某字符串结束的字符串

一、查找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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值