正则表达式为什么消耗大

这两天一直在思考,正则表达式的消耗点在哪里。总结与分析了一下,如下:

我们先来看看正则表达式的工作流程:

1 . 正则表达式需开启正则表达式引擎。(由各自语言的编译引擎开启)

2 . 编译正则表达式,把它转换成本机代码例程。

3 . 寻找正则匹配的起始点。(这点似乎可通过算法进行优化,类似算法可参照KMP算法)。

4 . 以下就是匹配的工作了,不是本文重点,故不细述。

以上便是系统的主要损耗点,其中认为起始点的寻找所用的算法对性能影响尤为巨大。

附:本机代码例程:百度百科解释为:指计算机编程代码,它被编译成用来运行一个特殊的处理器和特殊的指令集。(我们可以理解为:语言系统为了应对本语言的正则表达式,而为本机的正则表达式所创建的特定的代码集合,该代码集合主要是处理对应的处理器和指令集。)

时间: 2024-12-29 09:35:32

正则表达式为什么消耗大的相关文章

正则表达式-深入浅出

深入浅出之正则表达式 1.      什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用<<regex>>来表示一段具体的正则表达式. 一段文本就是最基本的模式,简单的匹配相同的文本. 2.      不同的正则表达式引擎 正则表达式引擎是一种可以处理正则表达式的软件.通常,引擎是更大的应用程序的一部分.在软件世界,不同的正则表达式并不互相兼容.本教程会集中讨论Perl 5 类型的引擎,因为这种引擎是应用最

转:深入浅出之正则表达式

深入浅出之正则表达式(一) 深入浅出之正则表达式(一) 前言:       半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程.于是一直想把他翻译过来.这个愿望直到这个五一长假才得以实现,结果就有了这篇文章.关于本文的名字,使用“深入浅出”似乎已经太俗.但是通读原文以后,觉得只有用“深入浅出”才能准确的表达出该教程给我的感受,所以也就不能免俗了.       本文是

JavaScript基础大全篇

本章内容: 简介 定义 注释 引入文件 变量 运算符 算术运算符 比较运算符 逻辑运算符 数据类型 数字 字符串 布尔类型 数组 Math 语句 条件语句(if.switch) 循环语句(for.for in.while.do-while) label语句 异常处理 函数 定义函数3种方式 函数参数(arguments) 作用域与作用链 闭包 面向对象(特性,构造模式,原型模式prototype) prototype 验证方法(isPrototypeOf.hasOwnProperty.in) 其

非常经典的正则表达式

本文是Jan Goyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载.但是为了尊重原作者和译者的劳动,请注明出处!谢谢! 1.      什么是正则表达式 基本说来,正则表达式是一种用来描述一定数量文本的模式.Regex代表Regular Express.本文将用<<regex>>来表示一段具体的正则表达式. 一段文本就是最基本的模式,简单的匹配相同的文本. 2.      不同的正则表达式引擎 正则表达式引擎是一种可以处理正则表达式的软件.通常,引擎是

Profiler跟踪高消耗的语句需添加哪些事件

通常接手一台数据库服务器后,我们会开启Profiler跟踪来了解SQL Server的繁忙情况.我们首先会想到的是监控CPU或Duration超过某一阈值的语句/过程.那么所创建的trace添加哪些事件和列比较合适?新建跟踪,默认模板会选择Audit Login.Audit Logout.ExistingConnection.RPC:Completed.SQL:BatchCompleted.SQL:BatchStarting这些事件.但我们稍作修改,下表中给出跟踪查询结束的事件: 事件类 事件

perl学习笔记之:正则表达式

 Perl 中的正则表达式 正则表达式的三种形式  正则表达式中的常用模式  正则表达式的 8 大原则          正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. ----------------------------------------------------------------

perl学习之正则表达式

9    Perl 中的正则表达式 正则表达式的三种形式 正则表达式中的常用模式 正则表达式的 8 大原则 正则表达式是 Perl 语言的一大特色,也是 Perl 程序中的一点难点,不过如果大家能够很好的掌握他,就可以轻易地用正则表达式来完成字符串处理的任务,当然在 CGI 程序设计中就更能得心应手了.下面我们列出一些正则表达式书写时的一些基本语法规则. -----------------------------------------------------------------------

11大女性产后坐月子饮食禁忌

导读: 老话儿说“生完宝宝后不能洗头.不能刷牙”已经被许多现代新妈妈认识到是糟粕,但是,产后的确有许多不能马上做的事情,新妈妈可千万不能冒险去做呀!……分娩时的创伤.出血和频繁的…… 老话儿说“生完宝宝后不能洗头.不能刷牙”已经被许多现代新妈妈认识到是糟粕,但是,产后的确有许多不能马上做的事情,新妈妈可千万不能冒险去做呀! 分娩时的创伤.出血和频繁的宫缩,以及临产时竭尽全力地用劲,使新妈妈热量消耗很大,身体变得异常虚弱.如果产后不能及时地补充足够的高质量的营养,就会影响新妈妈的身体健康.产后新妈

llinux文本三剑客之grep、egrep及相应的正则表达式和用法

Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客