Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 将字符串与TCL中的矩形括号匹配_Regex_Tcl - Fatal编程技术网

Regex 将字符串与TCL中的矩形括号匹配

Regex 将字符串与TCL中的矩形括号匹配,regex,tcl,Regex,Tcl,我正在尝试使用“regexp”进行一些字符串检查。代码1工作,但如果$ref来自文件,则失败。代码如下: 代码1可以正常工作: set foo "input \[1:0\]" regexp {input \[} $foo 代码2,$ref来自文件: ##ref_文件包含以下字符串: 输入[ 代码: 我无法控制ref_文件。如何使此代码工作?谢谢。看起来您没有使用regexp matching提供的任何东西,并且只执行普通字符串比较…所以为什么不使用类似的东西呢 string

我正在尝试使用“regexp”进行一些字符串检查。代码1工作,但如果$ref来自文件,则失败。代码如下:

代码1可以正常工作:

set foo "input \[1:0\]"
regexp {input \[} $foo
代码2,$ref来自文件:

##ref_文件包含以下字符串:

输入[

代码:


我无法控制ref_文件。如何使此代码工作?谢谢。

看起来您没有使用regexp matching提供的任何东西,并且只执行普通字符串比较…所以为什么不使用类似的东西呢

string first
返回匹配的索引,索引
-1
表示找不到匹配项。如果
如下所示,您可以轻松地在
中使用此选项:

if {[string first $ref $foo] > -1} {
    ...
}

如果您仍然打算使用regexp,那么我想您可以使用helper proc来转义非单词字符:

proc regesc {text} {
    regsub -all {\W} $text {\\&}
}

set foo "input \[1:0\]"
set fi [open ref_file r]
gets $fi ref
regexp [regesc $ref] $foo
if {[string first $ref $foo] > -1} {
    ...
}
proc regesc {text} {
    regsub -all {\W} $text {\\&}
}

set foo "input \[1:0\]"
set fi [open ref_file r]
gets $fi ref
regexp [regesc $ref] $foo