You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在路由器终端模拟器中匹配<1-100> permit格式输入?

如何用原思路验证路由器终端的输入格式?

嘿,我懂你想坚持最初的思路来解决这个问题——不想用split拆分的方式,而是想用类似"%d permit"这种格式化匹配的逻辑对吧?

你原来的写法if input == "%d permit" %number: print 'Do this'没法直接生效,核心问题是number是未知的,你没法提前知道用户输入的数字是什么,所以没法用固定的格式化字符串去匹配。那反过来想,我们可以提前生成所有符合要求的合法命令字符串,然后检查用户输入是否在这个合法集合里就完美贴合你的原思路了!

具体实现代码

首先生成包含所有合法命令的集合(用集合是因为查询效率比列表高):

# 注意range是左闭右开,所以range(1,101)才能覆盖1到100的所有数字
valid_commands = {"%d permit" % num for num in range(1, 101)}

然后处理用户输入并验证:

user_input = raw_input("Enter command: ")
if user_input in valid_commands:
    print 'Do this'

这样就完全用你最初的格式化思路解决了问题——所有符合<1-100> permit格式的命令都被提前生成,输入匹配就执行操作。

额外优化思路(可选)

如果以后数字范围变大(比如1-10000),生成集合会占用较多内存,这时候可以用正则表达式来动态匹配,虽然和你的原思路略有不同,但更灵活高效:

import re

user_input = raw_input("Enter command: ")
# 匹配开头是数字,后面跟着空格和permit的格式
match_result = re.match(r'^(\d+) permit$', user_input)
if match_result:
    try:
        num = int(match_result.group(1))
        if 1 <= num <= 100:
            print 'Do this'
    except ValueError:
        # 理论上不会走到这里,因为正则已经匹配了数字
        pass

内容的提问来源于stack exchange,提问作者Ion Riza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:08:45