gpt4 book ai didi

regex - 正则表达式的继承者?

转载 作者:行者123 更新时间:2023-12-03 21:04:20 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




10年前关闭。




看看 SO 上常见的一些正则表达式问题,在我看来,传统正则表达式语法在很多领域都无法满足人们现在正在寻找的任务类型。例如:

  • 我想匹配 1 到 31 之间的数字,我该怎么做?

  • 通常的答案是不要为此使用正则表达式,使用正常的条件比较。如果您只有数字本身,那很好,但是当您想将数字作为较长字符串的一部分进行匹配时,就不是很好了。为什么我们不能写这样的东西 \d{1~31} ,然后修改正则表达式以进行某种形式的计数,或者让正则表达式引擎在内部将其转换为 [1-9]|[12]\d|3[01] ?
  • 如何匹配特定字符串出现的偶数/奇数?

  • 这会导致非常困惑的正则表达式,如果能够只做 (mytext){Odd} 那就太好了。 .
  • 如何使用正则表达式解析 XML?

  • We all know这是一个坏主意,但如果 [^ ],这个和类似的任务会更容易。运算符不仅限于单个字符。能做就太好了 <name>(.*)[^(</name>)]
  • 如何使用正则表达式验证电子邮件?

  • 非常常见,但使用正则表达式正确执行非常复杂。如果像 {IsEmail} 这样的语法,每个人都不必重新发明轮子可以代替。

    我敢肯定还有其他人也会有用。我不太了解正则表达式的内部结构,不知道这些实现起来有多容易,或者是否有可能实现。实现某种形式的计数(以解决前两个问题)可能意味着它在技术上不再是“正则表达式”,但它肯定会很有用。

    'regex 2.0' 语法是否可取,技术上可行,有没有人在做这样的事情?

    最佳答案

    不要责怪工具,而要责怪用户。

    正则表达式是为匹配字符串中的模式而构建的。就是这样。

    它不是为:

  • 整数验证
  • 标记语言解析
  • 非常复杂的验证(即:RFC 2822)
  • 精确字符串比较
  • 拼写更正
  • 矢量计算
  • 基因解码
  • 创造奇迹
  • 宝宝储蓄
  • 财务管理
  • 亚原子分区
  • 磁通电容器激活
  • 经芯啮合
  • 时间旅行
  • 头痛诱发
    别介意最后一个。似乎正则表达式非常适合在不应该使用的地方执行最后一项任务。

  • 我们应该重新设计 Screwdriver ,因为它不能钉吗? ,用锤子。

    只需使用适合该任务的工具即可。停止对他们不符合条件的任务使用正则表达式。
  • 我想匹配 1 到 31 之间的数字,我该怎么做?
    使用您的语言结构尝试将字符串转换为整数并进行适当的比较。
  • 如何匹配特定字符串出现的偶数/奇数?
    正则表达式不是字符串解析器。但是,如果您只需要解析原始字符串的子部分,则可以使用正则表达式提取相关部分。
  • 如何使用正则表达式解析 XML?
    你没有。根据需要使用 XML 或 HTML 解析器。此外,XML 解析器不能完成 HTML 解析器的工作(除非您有一个完美的 XHTML 文档),反之亦然。
  • 如何使用正则表达式验证电子邮件?
    您可以使用 this large abomination或者你做对了with a parser .
  • 关于regex - 正则表达式的继承者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4813775/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com