gpt4 book ai didi

regex - 使用显式编号的重复词代替问号,星号和加号

转载 作者:行者123 更新时间:2023-12-02 07:30:31 25 4
gpt4 key购买 nike

我见过使用显式编号重复的正则表达式模式,而不是?*+,即:

Explicit            Shorthand
(something){0,1} (something)?
(something){1} (something)
(something){0,} (something)*
(something){1,} (something)+

问题是:
  • 这两种形式是否相同?如果添加所有格/勉强修饰符怎么办?
  • 如果它们相同,哪个更惯用?更具可读性?仅仅是“更好”?
  • 最佳答案

    据我所知它们是相同的。我认为可能有一些引擎不支持数字语法,但我不确定是哪一种。我隐约记得几天前关于SO的一个问题,其中明确的符号在Notepad ++中不起作用。

    我唯一要使用显式编号的重复次数是当重复次数大于1时:

  • 恰好两个:{2}
  • 两个或多个:{2,}
  • 2至4:{2,4}

  • 我倾向于使用这些,尤其是当重复的模式超过几个字符时。如果必须匹配3个数字,则有些人会喜欢写: \d\d\d,但我宁愿写 \d{3},因为它强调所涉及的重复次数。此外,如果将来需要更改该数字,我只需要将 {3}更改为 {n},而无需重新解析正则表达式,也不必担心将其弄乱;它需要更少的精力。

    如果不符合该条件,我更喜欢速记。使用“显式”表示法会很快使模式混乱,并使其难以阅读。我参与了一个项目,其中一些开发人员对正则表达式不太了解(这并不是每个人都喜欢的主题),而且我看到了很多 {1}{0,1}出现的情况。有人会要求我编写代码来审查其模式,那时候我建议将这些出现方式更改为速记符号并节省空间,并提高IMO的可读性。

    关于regex - 使用显式编号的重复词代替问号,星号和加号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61867590/

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