用于匹配“01.0到60.0,步长为0.5或99.9”的正则表达式?

2024-05-23 14:37:03 发布

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

我正在创建一个与工业真空设备通信的API。你知道吗

有效电机频率值如下所述,其形式为XX.X:

01.0至60.0,步长为0.5 Hz或99.9 Hz

我自己(用python)找到了以下解决方案:

import re
p = re.compile('[0-5]\d.[05]|01.0|60.0|99.9')

但是,我仍然可以匹配00.5,这不应该匹配。你知道吗

我不想明确地排除00.5,也许我忘记了一些我没有检查的其他结束情况。你知道吗

如何解决这个问题?你知道吗


Tags: importreapi情况解决方案形式电机频率
3条回答

还有另一种方法可以打破它

(?:0[1-9]|[1-5]\d)\.[05]|60\.0|99\.9

扩展

   (?: 0 [1-9] | [1-5] \d )
   \. [05] 
|  
   60\.0
|  
   99\.9

只需添加0[1-9]\.[05]作为选项,并将另一个基数限制为1-5

p = re.compile('0[1-9]\.[05]|[1-5]\d\.[05]|60\.0|99\.9')

您还需要使用\.而不是.,因为.表示任何字符。 终于不再需要01.0条件了

\d匹配数字0-9。如果不希望值以00开头,则可以使用负的lookahead(?)?!00)

您可以使用:

^(?!00)[0-5]\d\.[05]|60\.0|99\.9$
  • ^(?!00)字符串的开头并断言右边的不是00
  • [0-5]\d匹配00-59
  • \.[05]|60\.0|99\.9匹配点和数字0、5、60.0或99.9
  • $字符串结尾

Regex demo

相关问题 更多 >