叱咤大数据的Regex真的是正则表达式?

文章讲的是叱咤大数据的Regex真的是正则表达式,正则表达式已经存在几十年了,它甚至早于今天甚嚣尘上的大数据,UI,机器学习以及其他几乎所有的工具和技术。许多开发人员通常认为正则表达式很神秘并且难以学习,嘲笑使用正则表达式来验证电子邮件地址的人。但是,正则表达式非常强大,优雅,简单和通用。

  即使在今天的大数据世界,正则表达式在任何软件工程师的工具包中都足以长期存在。根据形式语言理论,正则表达式作为计算机科学的基础与任何编程语言或机器可读数据格式一样重要,是非结构化数据被结构化的一种机制,使混乱的数据变得有秩序。

  当面对文本处理的挑战时,很少有工具比正则表达式更适合。然而,在某种程度上,有一些性能问题需要注意。为了探讨这些注意事项,让我们先来看一下计算机科学理论。什么是正则表达式?正则表达式是状态机的文本编码。正因如此,正则表达式的表达能力有限,但它可以非常有效地处理输入。例如,当计算机不能确定输入的是否是回文时,正则表达式可以确定字符串是否是回文。正则表达式严格来说不如上下文无关语法强大,而这些语法又不如完整的编程语言(如C或Java)强大。因此,任何可以使用正则表达式解决的,技术上也可以使用标准的编程语言解决。

  但是,结合大数据使用的Regex真的是正则表达式吗?看到这,很多人会不假思索的脱口而出“是”,但其实,Regex并不是标准的正则表达式。

  严格地说,正则表达式与我们现在知道的Regex不同。这两个术语经常被混淆,但是多年来,从Perl的Regex引擎开始,Regex已经演变的比正规的正则表达式更强大。诸如从技术上看,捕获组反向引用的特征在实际的正则表达式中是不可能的。但真正的正则表达式可以被快速处理,支持正则表达式的引擎使用非常高效的Thompson NFA算法(例如SED,AWK和GREP)。而Regex设计了一种新的算法:递归回溯算法。这种新算法的出现引入了一系列正则表达式性能问题,性能慢现在几乎成了正则表达式的基本特征,尤其是在大数据时代。

  使用基于递归回溯的Regex引擎,可以制作出相对于输入长度在时间指数上更匹配的正则表达式,而Thompson NFA算法是在线时间匹配。如名称所暗示的,递归回溯算法的性能问题是由在处理输入中涉及的回溯引起的。当在大规模输入下使用正则表达式时,这种回溯会产生严重的后果,因为低效的正则表达式比正规的正则表达式需要更大的数量级来匹配。在大多数现代语言中,如Java,Python,Perl,PHP和JavaScript的标准正则表达式引擎都使用这种递归回溯算法,因此几乎任何涉及正则表达式的现代解决方案都容易受到性能不佳的正则表达式的攻击。幸运的是,几乎所有情况下,一个无效的正则表达式都可以被优化为一个有效的正则表达式,潜在地导致巨大的CPU周期节省。

  为了说明这一点,让我们考虑一个示例用例:解析日志数据。由于其可预测的格式,日志行可以容易地与正则表达式匹配,以提取有用的信息。假设下面的示例使用Regex来解析日志行是这样的:

  示例日志行如下所示:

  我们有兴趣收集的信息是app和web.1,它们通过第一和第二捕获组提取。虽然上面的正则表达式简单,可读,足以从输入文本中提取所需的信息,但一个高效的正则表达式是这样的:

  两个正则表达式从相同的输入文本提取相同的数据。然而,第二个正则表达式对于它期望匹配的数据格式有更多的设定。它首先编码日志行的时间戳格式,这几乎立即排除了不匹配的日志行。同时,它使用了否定字符类,不是(.*),消除了几乎所有的回溯。低效的正则表达式,因为所有的.*回溯过度,导致匹配慢很多。因为它以.*开头,它将消耗很多文本,缩放输入直至结束。然后它将向后搜索,直到寻找到下一个字符,本文这个例子是空格字符。一旦从最后开始搜索遇到第一个空格,它会再次占用所有字符,直到输入和回溯结束,再次搜索下一个字符,如果找到一个开放的方括号,就在找到下一个开放的方括号时匹配结束,否则此过程会继续直到输入匹配或没有更多的可能性尝试。高效的正则表达式没有这种回溯,性能就会有很大提高。

  一个简单的基准,其中每个正则表达式被输入10,000次,表明无效的正则表达式比高效的正则表达式需要大约20倍的匹配。这是非常惊人的,因为两个正则表达式从同一个输入提取相同的信息。这意味着如果你想使用正则表达式解析大量数据,Regex定义中的一些小调整可能会需要20台机器进行处理,而正规的正则表达式则仅需要1台机器,这显然会使成本降低并免于延迟。

  所以,我们现在普遍认同的Regex并不是真正的正则表达式,但除了性能之外,它似乎已经在各方面超越了正规的正则表达式,以至于我们逐渐模糊了两者之间的界限,归为统一。

作者:zyy

来源:IT168

原文链接:叱咤大数据的Regex真的是正则表达式?

时间: 2024-10-26 05:20:41

叱咤大数据的Regex真的是正则表达式?的相关文章

大数据金融谁是王者

转眼间又到年底,互联网圈的各种盘点也纷至沓来.日前,中国科学院旗下的<互联网周刊>发布了<2016互联网企业分类排行榜>,对P2P.消费金融.互联网支付.大数据金融等互金类企业进行了排名.其中,在<2016大数据金融企业TOP10>榜单中,芝麻信用.腾讯征信.京东金融.网易金融.百分点等企业赫然在榜. <互联网周刊>诞生于1998年,可以说见证了中国互联网(爱基,净值,资讯)行业的兴起和发展,也是目前中国互联网和IT业界最成功的主流商业杂志之一.每年年底&l

深扒大数据:关于用户隐私以及企业价值

文章讲的是深扒大数据:关于用户隐私以及企业价值, [IT168评论]如今,业界和学术界一直在讨论一个词,那就是大数据.不管是学术圈还是IT圈,只要能谈论点儿大数据就显得很高大上.然而,大数据挖掘.大数据分析.大数据营销等等事情仅仅只是个开始,对大多数公司来说,大数据仍有很强的神秘色彩.于是,在我们还没有完全搞明白如何运用大数据进行挖掘时,各种过于神化大数据的舆论就已经不绝于耳了.当然,也有很多人直接批判大数据或大数据营销给我们造成的隐私威胁.也有很多人根本没有搞清楚什么是大数据,到底有什么价值.

扒扒跟大数据有关的那些事儿

如今,业界和学术界一直在讨论一个词,那就是大数据.不管是学术圈还是IT圈,只要能谈论点儿大数据就显得很高大上.然而,大数据挖掘.大数据分析.大数据营销等等事情仅仅只是个开始,对大多数公司来说,大数据仍有很强的神秘色彩.于是,在我们还没有完全搞明白如何运用大数据进行挖掘时,各种过于神化大数据的舆论就已经不绝于耳了.当然,也有很多人直接批判大数据或大数据营销给我们造成的隐私威胁.也有很多人根本没有搞清楚什么是大数据,到底有什么价值. 于是,站在客观的角度,围绕下面几个问题与大家分享有关大数据的几个观

大数据持续升温 2014年6项大胆预测

文章讲的是大数据持续升温 2014年6项大胆预测,这是个气温变幻无常,消费者跌跌绊绊,预言家不断摸索的季节.诚如2014年开始,我们对大数据进行的一些大胆预言,这些大数据的预言真的将会成真吗? 大数据在2014年将会如何发展?当然任何人都可以对未来进行猜测,但是我们认为我们自己已经根据战斗在大数据战壕的高管们的形形色色的预言,为您准备好了一个关于大数据的美味假期.所以,不容迟疑,快来看明年大数据的六大预测: 1.更多的Hadoop项目会遭遇失败而不会成功 这一可怕的评估是由大数据应用平台公司的C

与大数据加速深度结合,电子竞技或将迎来“大数据时代”

不得不说,这些年来电子竞技永远是一个充满话题的领域,与几年前的备受争议不同,如今电竞随着玩家和观众规模的倍数增长,外界资本的大量流入,加之政府态度的软化,正逐渐向着越来越正规的方向发展.这其中包括电子竞技俱乐部的规范化.赛事数量增多.主办方组织水准提升.网络转播的专业化等方方面面.然而,从近一年多来的Dota2.LOL等主流电竞项目的大型赛事来看,似乎又多了一项正在慢慢步入正轨的生意. 在去年几次大赛的赛后采访中,不少战队都提到了团队中数据分析师的关键作用,这些分析师们的主要职责就是针对选手在游

防止坠入“大数据陷阱”,除了技术还需要什么?

摘要面对互联网金融大潮,在兴奋激动之余,我们还需要一种相对冷静平和的心态.如果我们真的要搞金融大数据开发,真的要靠有关数据来办互联网金融,那确实就要认真思考一下自己所谓拥有的"大数据"真的足够大了吗?足够长了吗? 当今,互联网化正带动着许多行业.产业的组织变革和商业变革.在这一历史性的进程中,互联网技术的迅速发展也给金融领域的创新带来了巨大活力,显著提升了金融服务的水平.首先,从银行来说,现在银行已普遍通过互联网渠道开办各类业务,银行服务的成本有了下降(电子银行每笔交易成本大约只有银行

大数据理财靠谱吗?京东和阿里各贡献了一个例子

大数据早已成为互联网行业里说烂的概念.从赛事比分预测到新闻推荐,再到商品的导购,几乎都有人与它关联起来.理财产品,也不例外. 从去年 4 月,阿里招财宝的招财一号推出,至今已近 1 年.这个自称全球首只用上电商大数据配置股票的基金.近三月来的净值增长率是 0.91%,自成立以来增长率则为 -0.3 %. 当招财一号刚发布的时候,听上去是很有道理的一个产品.其超过 60% 的投资都会放在牢靠的固定收益产品上,剩下的部分则会根据阿里巴巴的淘金 100 指数进行配置. 淘金 100 指数利用其在电商领

大数据精准营销必读的“三步曲”及“两误区“

随着云时代的来临,大数据也吸引了越来越多的关注,大多行业都因沾染这两个词汇为荣.马云也表示,在接下来的社会经济发展中,数据将如过去的"石油"成为一种核心资源. 其实,上面这些搜集的数据多数是无效的.在我的文章<展会大数据精准营销,你应该知道这些事>中,明确提要一个词汇"大数据画像",考虑到未来的营销会是精准化营销,搜集数据时一定要按数据的组合进行整理,而大数据画像很直接地告诉我们该搜集怎样的数据,由于篇幅有限,此处不过多讲解,更多请自行百度一下进行阅读.

大数据人才之困 催生企业定制班模式

文章讲的是大数据人才之困 催生企业定制班模式,10年前,如果说大数据分析你会想到什么?银河超级计算机?基因组网格计算?那时候大数据离我们似乎还很远.而如今,从央视的春运迁徙图到美国奥巴马政府宣布投资2亿美元启动"大数据研究与开发计划;从两会期间的两会大数据到预报旅游热点,大数据正在对每个领域都造成影响,大数据就在我们身边. 众所周知,数据中的价值是存在的,而且还远远未被挖掘出来.随着CPU处理速度提升,分布式处理架构日渐成熟,互联网催生数据量以指数速度增长,各大公司纷纷上马大数据业务,伴随而来的