`
wyzxzws
  • 浏览: 391680 次
  • 性别: Icon_minigender_1
  • 来自: dazhou
社区版块
存档分类
最新评论

更多提高正则表达式效率的方法

 
阅读更多
  1. 让匹配更快失败,尤其是匹配很长的字符串时,匹配失败的位置要比成功的位置多得多。
  2. 以简单、必须的字元开始,排除明显不匹配的位置,如锚点(^或$),特殊字符(x或\u263A)字符类([a-z]或\d之类的速记符),和单词边界(\b);尽量避免使用分组、选择、重复量词开头,如/one|two/、\s、\s{1,}等。
  3. 使用量词模式时,尽量让重复部分具体化,让字元互斥,如用”[^"\r\n]*”代替”.*?”(这个依赖回溯)。
  4. 减少分支数量、缩小分支范围,用字符集和选项组件来减少分支的出现,或把分支在正则上出现的位置推后,把分支中最常出现的情况放在分支的最前面。cat|bat -> [cb]at;red|read -> rea?d;red|raw -> r(?:ed|aw);
    1. (.|\r|\n) -> [\s\S]
    1. 使用非捕获组,因为捕获组需要消耗时间和内存来记录反向引用,并不断更新,如果不需要反向引用,可用非捕获组(?:…)代替捕获组(…);当需要全文匹配的反向引用时,可用regex.exec()返回的结果或者在替换字符串是使用$&。
    此优化在firefox中效果较小,但其他浏览器中处理长字符串时有较大影响。
  5. 精确匹配需要的文本以减少后续的处理,如果需要引用匹配的一部分,可使用捕获,然后通过反向引用来处理。
  6. 暴露必需的字元,用/^(ab|cd)/而不是/(^ab|^cd)/。
  7. 使用合适的量词,基于预期的回溯数量,使用合适的量词类型。
  8. 把正则表达式赋值给变量以便复用和提升提升性能,这样可以让正则减少不必要的编译过程。while (/regex1/.test(str1)) {/regex2/.exec(str2);}用下面的代替上面的   var regex1 = /regex1/,regex2 = /regex2/;while (regex1.test(str1)) {regex2.exec(str2);}
  9. 将复杂的正则表达式拆分成简单的片段,每个正则只在上一个成功的匹配中查找,更高效,而且可以减少回溯。
分享到:
评论

相关推荐

    pb 使用正则表达式源码pbregexp

    在PowerBuilder中,正则表达式通常用于数据验证、文本处理、搜索和替换等任务,能够提高代码的灵活性和效率。 正则表达式是一种模式匹配语言,它允许开发者用简洁的语法来描述一组字符串的共同特征。在PowerBuilder...

    正则表达式(Deelx版)|正则表达式(Deelx版)支持库

    Deelx版是专门为提高正则表达式性能和功能而设计的一个支持库,适用于各种编程语言和应用场景。 1. **正则表达式基本概念** - **模式匹配**:正则表达式的核心在于模式,它是由特殊字符和普通字符组成的字符串,...

    正则表达式自动生成器 V2.0.0.1 官方多语版

    在实际工作中,正则表达式自动生成器能极大地提高开发和测试效率,特别是在处理大量数据验证、文本分析等场景。不过,熟练掌握正则表达式的语法仍然是非常重要的,因为这样可以更灵活地应对各种复杂的需求。用户在...

    易语言正则表达式文本替换

    总的来说,易语言的正则表达式文本替换功能提供了强大的文本处理能力,对于需要处理和分析文本的程序开发者来说,掌握这项技能能极大地提高工作效率。通过深入理解正则表达式和易语言的相关函数,开发者可以灵活地...

    三目运算符+正则表达式

    在编程世界中,三目运算符和正则表达式是两个非常重要的概念,它们各自扮演着独特的角色,同时也常被结合起来使用,以提高代码的简洁性和效率。让我们深入探讨这两个主题。 首先,三目运算符,也称为条件运算符,是...

    通过正则表达式生成数据

    3. **效率**:如果需要大量生成数据,优化正则表达式和生成算法以提高效率。 通过理解并熟练运用正则表达式生成数据,我们可以更高效地完成测试、模拟和数据分析等工作,同时也能更好地保护用户隐私。无论是手动...

    正则表达式翻译工具,RegexTest.exe

    正则表达式(Regular ...对于初学者,学习正则表达式可能有些挑战,但通过实践和使用像RegexTest.exe这样的辅助工具,可以大大提高学习效率和应用能力。熟练掌握正则表达式,将使你在处理文本数据时事半功倍。

    Oracle数据库正则表达式

    使用正则表达式可以编写简洁、强大的 SQL 语句,提高数据处理的效率和灵活性。熟练使用正则表达式可以帮助用户快速搜索、替换和验证数据,并提供高度的灵活性。 在 Oracle 数据库中,正则表达式的应用非常广泛,...

    易语言正则表达式类匹配中文

    例如,对于一个新闻网站,可以利用正则表达式类匹配中文源码来提取文章标题或关键词,或者在用户输入的搜索查询中进行模糊匹配,提高搜索效率。 通过易语言提供的正则表达式类,我们可以高效地处理中文文本,进行...

    第11.25节 Python正则表达式编译re.compile及正则对象使用.rar

    正则表达式对象提供了多个方法来执行不同的操作: 1. `search(pattern, string, flags=0)`: 在字符串`string`中搜索第一个匹配`pattern`的子串,返回一个匹配对象;如果没有找到,则返回`None`。 2. `match(pattern...

    JAVA正则表达式大全

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换和分析字符串。...在处理字符串相关问题时,熟练掌握正则表达式能极大地提高效率和代码质量。

    正则表达式不包涵特殊字符(除了 指定字符 以外)

    在探讨如何利用正则表达式来判断一个字符串除指定字符外不包含其他特殊字符之前,我们首先需要了解正则表达式的基本概念以及本...对于开发者而言,熟练掌握正则表达式的编写技巧对于提高代码质量和效率具有重要意义。

    Java正则表达式 Java 正则表达式

    Java正则表达式是Java语言中用于处理字符串的强大工具,它...通过熟练掌握Java正则表达式,开发者可以在处理字符串时提高效率,实现更复杂的数据提取和处理任务。理解并运用这些知识点,将使你的代码更加灵活且高效。

    VB 正则表达式 使用详解

    VB 正则表达式使用详解 VB 正则表达式是指使用正则表达式在 VB 中进行字符串处理和搜索操作。...了解正则表达式的语法规则和元字符的使用,可以帮助 VB 开发人员更好地使用正则表达式,提高字符串处理的效率和灵活性。

    正则表达式客户端工具

    正则表达式(Regular Expression...通过使用这样的客户端正则表达式工具,无论是开发人员还是数据分析者,都能更高效地处理文本数据,提升工作效率。在日常工作中,掌握正则表达式及其应用是提高生产力的关键技能之一。

    正则表达式综合练习

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,它在IT行业中扮演着重要的角色,尤其是在数据...在实际项目中,结合编程语言的特性,正则表达式能帮助我们构建出更高效、精准的爬虫系统。

    Java正则表达式.ppt

    使用Java正则表达式的好处在于它能显著提高编程效率,例如验证电子邮件地址这样的任务,传统方法可能需要大量的代码,而使用正则表达式则可以大大简化。然而,这也需要程序员学习和掌握正则表达式相关的知识。 在...

    正则表达式全解及正则表达式学习心得

    正则表达式全解及正则表达式学习心得 正则表达式是字符串模式匹配的强大工具,掌握正则表达式可以让开发者更方便地处理字符串数据。...掌握正则表达式可以让开发者更方便地处理字符串数据,提高开发效率和产品质量。

Global site tag (gtag.js) - Google Analytics