何时使用正则表达式与内置字符串方法?

2023-11-28

我注意到关于何时使用正则表达式以及何时使用内置字符串函数(如 String.Replace() (.NET))的很多小争论。

似乎很多人建议在处理字符串时总是、总是、总是使用正则表达式(除了显示它们之外)。这真的是最佳实践还是只是我的错误印象?当问题只是“从文本中删除任何这些单词的出现”时,使用正则表达式似乎有点矫枉过正。

我想要输入,以便我可以改进自己的代码并更好地回答其他人有关字符串操作的问题(有很多)。


我认为当可以进行基于字符串的搜索/替换时,使用正则表达式作为包罗万象的解决方案是错误的印象。

正则表达式本质上是模式匹配的过程,当您要匹配的字符串类型可变或仅符合特定模式时,应使用正则表达式。对于简单的字符串搜索就足够的情况,我总是建议使用内置的方法String class.

我从未见过任何性能统计数据表明基于正则表达式的查找比字符串索引更快或更高效。此外,正则表达式引擎的执行能力各不相同。

好像这还不够,很容易构建一个性能非常差的正则表达式(例如,使用大量回溯),因此如果您确实想使用正则表达式匹配来优化性能,则需要对正则表达式有深入的了解。另一方面,即使对于 n00b 来说,执行基于字符串的搜索或替换也非常简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用正则表达式与内置字符串方法? 的相关文章

随机推荐

  • Haskell int 列表转字符串

    我想知道有没有简单的方法可以转 5 2 10 into 52a 不仅仅是这种情况 我想将任何 gt 9的数字与相应的字母相关联 提前致谢 您想要对列表中的每个元素执行某些操作以获得新列表 换句话说 您想要对每个元素应用一个函数 您必须自己定
  • intel/64位win7上是否可以在32位应用程序中使用64位指令

    我的环境是64位win7 VC2010 当然 里面的intel是64位CPU 我可以在 32 位应用程序中使用 64 位指令 本机机器字 64 位 吗 由于我的大部分代码都是 32 位的 因此我不想将其移植到 64 位 对于一些性能关键的热
  • WPF 中的棋盘

    多年来我一直使用 Winforms 进行开发 现在我想切换到 WPF 并制作一个棋盘 不幸的是我不知道从哪里开始 使用 WPF 让我非常不确定 我感觉自己又像个菜鸟了 有人可以概述一下基本设计吗 我想我会从 8x8 网格开始 使用矩形作为正
  • 我可以同时使用命令行 Git 工具和 TortoiseGit 吗?

    有时 使用 git bash 比使用 TortoiseGit 更详细且更容易获取有关 git 的信息 因此 我想使用 git bash 来解决非常具体的问题 例如 同时创建分支 签出并提交未提交的更改 git checkout b my n
  • 将 ANTLR 4 集成到 C++ 应用程序中

    Recently I picked up a copy of The Definitive ANTLR 4 Reference and since I am sophisticated when it comes to working wi
  • 函数式编程:副作用

    大多数教程 文章 书籍都会讨论函数式编程时的副作用 采取这个Python代码 def isPrime n k 2 while k lt n if n k 0 return False k 1 return True 文中说上面的函数有局部副
  • 为什么CALL会在这个脚本中打印GOTO帮助消息?为什么之后的命令会执行两次?

    这是一个有趣的话题 我尝试着研究那里讨论的两件事 您可以通过双扩展访问带有特殊符号的标签 标签包含 无法使用 因为GOTO and CALL打印他们的帮助消息而不是执行 结果如下 echo off setlocal enableDelaye
  • 参数和参数之间的区别[重复]

    这个问题在这里已经有答案了 参数 和 参数 之间有区别吗 或者它们只是同义词 论证通常用于以下含义 实际论证 vs 形式参数 The 形式参数是函数声明 定义 原型中给出的内容 而实际论证是调用函数时传递的内容 如果您愿意的话 可以是形式参
  • epoll 是否保留 fd 的注册顺序?

    我正在研究 Linux 系统调用 我发现了一些方面epoll 我不清楚 说 我创建一个epoll实例 epollfd epoll create 50 接下来 我在中注册 50 个文件描述符for loop for i 0 i lt 50 i
  • Flex:防止滚动条自动显示时覆盖内容

    我在Flex中有一个画布 只能在垂直方向滚动 所以我将画布的属性设置如下 verticalScrollPolicy auto horizontalScrollPolicy off 这里的问题是垂直滚动条在出现时覆盖了内容 尽管还有足够的水平
  • AJAX 和 NS_ERROR_DOM_BAD_URI 错误

    我一直遇到以下问题 我认为这可能是由于我的方法可能被误导 但希望在您的帮助下我可以解决这个问题 基本上 对于我的网站 我有一个搜索提供商 已付费 所以我没有违反任何使用条款 提交搜索表单后 我将被定向到显示结果的域 虽然我可以自定义返回结果
  • JQuery Ajax 调用给出 404 'Resource Not Found' 错误,但正常的 URL 调用没问题

    在 ASP NET MVC 项目中使用 JQuery 调用时 我遇到了一个奇怪的问题 我发现 Ajax 调用给出 404 资源未找到错误 但是当我使用通常的 URL GET 调用时 我可以成功调用服务器 没有任何问题 知道为什么会这样吗 这
  • Java-获取当前计算机的声音输出

    有没有办法从计算机的默认音频输出中获取声音 我不想操纵它 我只想对频率进行视觉表示 很像均衡器 这个问题是重复的 实时音频可视化 Java java 声音 API 允许您与当前的音频输出进行交互 您可以在这里找到参考 http www ja
  • 无法在多风格应用程序中构建功能模块

    我在 Android Studio 3 1 1 上使用 Gradle 4 4 和 Gradle Android 插件 3 1 1 我有 2 种风格 a 和 b 由于以下错误 我无法构建我的项目 Cannot choose between t
  • 使用 DRF ModelViewSet 和 TemplateHTMLRenderer 时如何访问模板中的数据?

    我有一个 Django Rest 框架ModelViewSet我正在尝试使用TemplateHTMLRenderer显示 HTML 跟随在tutorial from rest framework import permissions ren
  • Python 3.4 的 HTML 解析器

    我有一些用 Python 2 7 编写的代码 它使用 HTMLParser 我目前使用的是Python 3 4 我找不到 HTMLParser 下载模块 如果存在的话 有人可以分享一下链接吗 如果没有 我该怎么办 您不需要安装 Python
  • 如何使用 Express 添加 MIME 类型

    我正在尝试让 Firefox 播放视频标签 通常 我会将其添加到 Apache 上的 htaccess 文件中 AddType video ogg ogv AddType video mp4 mp4 AddType video webm w
  • 解析转发的电子邮件

    我正在写一些代码parse转发的电子邮件 我不确定是否有一些 Python 库 一些我可以坚持使用的 RFC 或一些其他资源可以让我自动执行任务 准确地说 我不知道转发电子邮件的 布局 是否包含在某些标准或建议中 或者它是否只是多年来才发展
  • VBA公共数组:如何?

    所以今天的问题让我很生气 因为这应该很容易 但我找不到答案 如何在VBA中声明公共数组 我正在使用包含字母 A B C 的数组 因为我正在使用 Excel 单元格 并且我不想在我创建的每个函数中声明它 对吧 我尝试先在网上查看 我读到您必须
  • 何时使用正则表达式与内置字符串方法?

    我注意到关于何时使用正则表达式以及何时使用内置字符串函数 如 String Replace NET 的很多小争论 似乎很多人建议在处理字符串时总是 总是 总是使用正则表达式 除了显示它们之外 这真的是最佳实践还是只是我的错误印象 当问题只是