使用 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 的前四个字符。
我有两个变量
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 的前四个字符。