我见过使用显式编号重复的正则表达式模式,而不是?
,*
和+
,即:
Explicit Shorthand
(something){0,1} (something)?
(something){1} (something)
(something){0,} (something)*
(something){1,} (something)+
问题是:
最佳答案
据我所知,它们是相同的。我认为可能有一些引擎不支持数字语法,但是我不确定哪个。我隐约想起几天前关于SO的一个问题,即在Notepad++中显式表示法不起作用。
我唯一使用显式编号的重复的时间是当重复大于1时:
{2}
{2,}
{2,4}
我倾向于这些,尤其是当重复的模式超过几个字符时。如果必须匹配3个数字,则有些人会喜欢写:
\d\d\d
,但我宁愿写\d{3}
,因为它强调所涉及的重复次数。此外,如果将来需要更改该数字,我只需要将{3}
更改为{n}
,而无需重新解析正则表达式,也不必担心将其弄乱;它需要更少的精力。如果不符合该条件,我更喜欢速记。使用“显式”符号会很快使图案困惑,并使其难以阅读。我参与了一个项目,其中一些开发人员对正则表达式不太了解(这并不是每个人都喜欢的主题),而且我看到了许多
{1}
和{0,1}
出现的情况。有人会要求我编写代码来审查其模式,那时候我建议将这些内容更改为速记符号并节省空间,并提高IMO的可读性。关于regex - 使用显式编号的重复词代替问号,星号和加号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3032593/