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

2024-03-29 02:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直使用[0-9]{9,12}来表示数字字符串的长度为9或12个字符。不过,我现在意识到它将匹配长度为10或11的输入字符串。所以我就天真地说:

( [0-9]{9} | [0-9]{12} )

有没有更简洁的正则表达式来表示这一点?你知道吗


Tags: 字符串数字意识个字符
3条回答

你可以试试

(\d{9}\d{3}?)

匹配9,然后可选的额外3位数

或者

((\d{3}){3,4})

匹配3或4组3位数字

你可以这样做:

[0-9]{9}[0-9]{3}?

没什么不同。。。你知道吗

您可以使用

[0-9]{9}([0-9]{3})?

但我认为你的方式更好,因为它更清楚地表达了你的意图。正则表达式已经很难读了。你知道吗

当然,您可以使用\d而不是[0-9]。你知道吗

(编辑:我最初以为你可以把paren放在[0-9]{3}左右,但你不能;问号将被忽略。所以只保存一个字符,而不是三个。)

(编辑2:您还需要使用^$(或\b)或re.match()来锚定正则表达式,这些正则表达式也将匹配1234567890中的123456789

相关问题 更多 >