python - 在正则表达式中匹配同一字符类的两个不同重复是更好的方法吗?

标签 python regex

我一直在使用 [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/

相关文章:

regex - 如何在 R 中将文本文件读取为一行

python - 无法从给定格式中提取出生日期

javascript - 为什么正则表达式使用 Angular $sce 在 "t"中查找 "Georgia"?

python - Django Rest Framework 序列化程序不显示所有字段

python - 在 Visual Studio Code 中为 Python 创建简单任务

javascript - 正则表达式和 GBP(£)

ruby-on-rails - 使用正则表达式替换字符之间的可选匹配

python - OSError 38 [Errno 38] 多处理

python - 如何使用 python 更新 sqlite 表,其中列表中的值?

python - OneHotEncoder,类型错误: __init__() got an unexpected keyword argument 'drop'