Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
‘;无效的裸字“;regexp"’;在Tcl脚本中_Regex_Tcl_Bareword - Fatal编程技术网

‘;无效的裸字“;regexp"’;在Tcl脚本中

‘;无效的裸字“;regexp"’;在Tcl脚本中,regex,tcl,bareword,Regex,Tcl,Bareword,上面的代码在tcl中生成无效的裸字“regexp”错误 我想知道单词中的错误是什么,tcl中的无效单词是什么。如何调试。它不是来自正则表达式。这是一个Tcl语法问题。你应该写: proc mulval { addr } { if {regexp {^([2][2-3][0-9])\.+(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-])\.+(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.+(25[0-5]|2[0-4]

上面的代码在tcl中生成无效的裸字“regexp”错误


我想知道单词中的错误是什么,tcl中的无效单词是什么。如何调试。

它不是来自正则表达式。这是一个Tcl语法问题。你应该写:

proc mulval { addr } {

if {regexp {^([2][2-3][0-9])\.+(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-])\.+(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.+(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$} $addr } {
        puts "Valid IP Multicast Address"
    } else { 
        puts"Invalid IP multicast Address"
    }

}

方括号表示内容必须被视为可执行命令。

错误在于
regexp
if
的第一个参数内被写为非限定字符串。如果要将命令的结果作为条件参数中的操作数,需要在其周围加上括号:
[regexp…]

但是不应该使用正则表达式来验证IP号码。虚线十进制只是编写IP号码的多种可能方法之一,尝试用正则表达式对它们进行排序将是一件痛苦且容易出错的事情

改用
ip
模块。我不是知识产权专家,但以下几点应该有效:

if { [ regexp {^([2][2-3][0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$} $addr ] } {
    puts  "Valid IP Multicast Address" 
} else { 
    puts  "Invalid IP multicast Address"
}
会议文件


文档:,

正则表达式是正确的。请检查
\.+
上的其他内容应为
\.
。它将匹配
225…..255.0
其他内容
package require ip

proc mulval addr {
    set mc [::ip::prefix 224/4]

    if {[::ip::equal $mc [::ip::prefix $addr/4]]} {
        puts "Valid IP Multicast Address" 
    } else { 
        puts "Invalid IP multicast Address"
    }
}