是不是只用正则表达式的“基本”语法就能完成所有的工作,即使不使用“高级”正则语法?

所谓的“高级”语法指的是:

  • 非获取匹配
  • 正向肯定预查
  • 正向否定预查
  • 反向肯定预查
  • 反向否定预查

所谓的“基本”语法指的是元字符 + 获取匹配。

阅读 2.7k
8 个回答

是不是使用 4+4+4+4 就可以算出 4*4 是多少?

效率肯定是不一样的

工作中一般也不会遇到太难的场景。太难的场景有时候也不会选择正则,而是 AST

我们要选择适合的工具,而不是有个锤子,眼中全是钉子。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

试试用“基本”语法匹配所有的两边为a的b
abababacbaba

这个问题的答案一定是否定的,这就好比要要判断数组中某个元素的索引一样,你当然可以使用 for 循环来实现,但使用 indexOf 更方便,也就是说还是看你的场景。

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

使用高级正则语法可以提高匹配的准确性和效率,并且可以更精细地控制匹配结果。
就像你明明已经会js了,为什么还要用jq呢

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

对的,正则表达式的基本语法可以完成大部分的匹配工作,而高级语法则是在基本语法的基础上增加了一些特殊的功能。基本语法包括元字符、量词、字符类等,它们可以用来匹配各种文本模式。例如,使用基本语法可以匹配数字、字母、空格、特殊符号等。

高级语法则可以实现更加复杂的匹配需求,例如非获取匹配可以用来匹配但不捕获某个子表达式,正向肯定预查可以用来匹配后面跟着某个子表达式的内容,反向否定预查可以用来匹配不跟着某个子表达式的内容等。这些高级语法虽然功能强大,但并不是所有的正则表达式引擎都支持,而且使用起来也比较复杂,需要深入理解正则表达式的工作原理。

对于大多数简单的匹配需求,使用正则表达式的基本语法就足够了。如果你需要实现更加复杂的匹配需求,可以再考虑使用高级语法。

和效率没有关系,百度一下“正则是否图灵完备”

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏