2024-05-23 14:37:03 发布
网友
我正在创建一个与工业真空设备通信的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,也许我忘记了一些我没有检查的其他结束情况。你知道吗
如何解决这个问题?你知道吗
还有另一种方法可以打破它
(?: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
0[1-9]\.[05]
p = re.compile('0[1-9]\.[05]|[1-5]\d\.[05]|60\.0|99\.9')
您还需要使用\.而不是.,因为.表示任何字符。 终于不再需要01.0条件了
\.
.
\d匹配数字0-9。如果不希望值以00开头,则可以使用负的lookahead(?)?!00)
\d
00
您可以使用:
^(?!00)[0-5]\d\.[05]|60\.0|99\.9$
^(?!00)
[0-5]\d
\.[05]|60\.0|99\.9
$
Regex demo
还有另一种方法可以打破它
(?:0[1-9]|[1-5]\d)\.[05]|60\.0|99\.9
扩展
只需添加
0[1-9]\.[05]
作为选项,并将另一个基数限制为1-5您还需要使用
\.
而不是.
,因为.
表示任何字符。 终于不再需要01.0条件了\d
匹配数字0-9。如果不希望值以00
开头,则可以使用负的lookahead(?)?!00)您可以使用:
^(?!00)
字符串的开头并断言右边的不是00[0-5]\d
匹配00-59\.[05]|60\.0|99\.9
匹配点和数字0、5、60.0或99.9$
字符串结尾Regex demo
相关问题 更多 >
编程相关推荐