Using explicitly numbered repetition instead of question mark, star and plus

后端 未结 4 2136
谎友^
谎友^ 2020-11-21 11:00

I\'ve seen regex patterns that use explicitly numbered repetition instead of ?, * and +, i.e.:

Explicit            Sho         


        
4条回答
  •  無奈伤痛
    2020-11-21 11:47

    To my knowledge they are identical. I think there maybe a few engines out there that don't support the numbered syntax but I'm not sure which. I vaguely recall a question on SO a few days ago where explicit notation wouldn't work in Notepad++.

    The only time I would use explicitly numbered repetition is when the repetition is greater than 1:

    • Exactly two: {2}
    • Two or more: {2,}
    • Two to four: {2,4}

    I tend to prefer these especially when the repeated pattern is more than a few characters. If you have to match 3 numbers, some people like to write: \d\d\d but I would rather write \d{3} since it emphasizes the number of repetitions involved. Furthermore, down the road if that number ever needs to change, I only need to change {3} to {n} and not re-parse the regex in my head or worry about messing it up; it requires less mental effort.

    If that criteria isn't met, I prefer the shorthand. Using the "explicit" notation quickly clutters up the pattern and makes it hard to read. I've worked on a project where some developers didn't know regex too well (it's not exactly everyone's favorite topic) and I saw a lot of {1} and {0,1} occurrences. A few people would ask me to code review their pattern and that's when I would suggest changing those occurrences to shorthand notation and save space and, IMO, improve readability.

提交回复
热议问题