我一直在使用 [0-9]{9,12}
来表示数字字符串的长度为 9 或 12 个字符。但是我现在意识到它也会匹配长度为 10 或 11 的输入字符串。所以我天真地出来了:
( [0-9]{9} | [0-9]{12} )
有没有更简洁的正则表达式来表示这个?
最佳答案
您可以使用以下方法保存一个字符
[0-9]{9}([0-9]{3})?
但我认为你的方式更好,因为它更清楚地传达了你的意图。正则表达式已经很难阅读了。
当然你可以使用\d
代替[0-9]
。
(编辑:我一开始以为你可以去掉 [0-9]{3}
周围的括号,但你不能;问号将被忽略。所以你只保存一个字符,不是三个。)
(编辑 2:您还需要使用 ^
和 $
(或 \b
)或 re 来锚定正则表达式.match()
还将匹配 1234567890
中的 123456789
。)
关于python - 在正则表达式中匹配同一字符类的两个不同重复是更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6502592/