欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 正则表达式

正则表达式

2024/10/25 0:40:33 来源:https://blog.csdn.net/i8013/article/details/142971519  浏览:    关键词:正则表达式

首先要有一个观念:正则表达式一个语句不是完全通用的!它的行为还会受到具体编程语言或工具中正则表达式引擎实现的影响。不同的编程语言或工具可能会有细微的差别,这些差别可能会影响正则表达式的匹配结果。

Delphi XE:

procedure TFrmMain.ExtractALL(const aGuiZhe, AInputString: string);
// uses RegularExpressions
// 整文全匹
varregex: TRegEx;match: TMatch;matches: TMatchCollection;options: TRegExOptions;
beginoptions := [roIgnoreCase, roMultiLine, roExplicitCapture];regex := TRegEx.Create(aGuiZhe, options);matches := regex.matches(AInputString);// 遍历匹配项集合for match in matches doMemo2.Lines.Add(match.Value);
end;procedure TFrmMain.ExtractFirst(const aGuiZhe, AInputString: string);
// uses RegularExpressions
// 仅匹第一个捕获组
varregex: TRegEx;match: TMatch;options: TRegExOptions;
begin// roExplicitCapture  让捕获组失效,所以这里不能用options := [roIgnoreCase, roMultiLine];regex := TRegEx.Create(aGuiZhe, options);match := regex.match(AInputString);if match.Success and (match.Groups.Count > 1) thenMemo2.Lines.Add(match.Groups[1].Value); // 捕获组第一个下标为1,整个匹配组下标才是0
end;

以上代码简介:

仅匹第一个捕获组:正则表达式带小括号()的为捕获组,一句正则表达式语句,如果含有多个小括
号(),那么第一个括号的下标为1也就是第一个捕获组。

整文全匹:就是在整个原文中找到所有的匹配项,全匹就是不带捕获组,正则表达式一个语句捕获组是无效的,全部匹配。

这两种方案基本上可以搞定大部份正则匹配。

另外匹配项和捕获组是不同的概念,举例说明:

比如我要从这句SQL语句中获取表名:select * from MyTable

我用正则表达式为:FROM\s+(\w+)

匹配项返回的是:from MyTable
捕获组返回的是:MyTable

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com