使用 tcl 对两个变量使用正则表达式

Use regexp on two variables using tcl

我有两个变量

echo $a
>> 123.txt
echo $b
>> 341.txt 123.txt 654.txt

我想用正则表达式来判断a是否出现在b中!

你可以这样做:

if {$a in $b} {
    puts present
} else {
    puts absent
}

in 描述在 expr man page.

或者用正则表达式,这个:

if {[regexp -- "\m[regsub -all {\W} $a {\&}]\M" [join $b]]} {
    puts present
} else {
    puts absent
}

所有复杂的事情都是为了确保您不匹配“123-txt”或“0123.txt”或“123.txt2”

Tcl 的 regexp 让你在正则表达式中提供一个特殊的前缀来表示 RE 的其余部分是文字字符串。这使得这样做很容易(假设你不想锚定):

if {[regexp ***=$a $b]} {
    puts "found!"
}

***= 前缀(如果存在)必须是 RE 的前四个字符。