Tcl 如何在expect\u out(缓冲区)中检查特定字符串,并在找到该字符串时打印expect\u out(缓冲区)?

Tcl 如何在expect\u out(缓冲区)中检查特定字符串,并在找到该字符串时打印expect\u out(缓冲区)?,tcl,expect,Tcl,Expect,我想检查我的expect\u out(buffer)是否包含%作为任何一行的第一个字符 如果找到了,请打印wole expect out contants。我对expect不太熟悉。但是如果它只是一个普通的tcl字符串,比如: %line1 ^line2 &line3 然后你可以这样做: set buffer "%line1\n^line2\n&line3" foreach line [split $buffer "\n"] { if {[string index $l

我想检查我的
expect\u out(buffer)
是否包含
%
作为任何一行的第一个字符
如果找到了,请打印wole expect out contants。

我对expect不太熟悉。但是如果它只是一个普通的tcl字符串,比如:

%line1
^line2
&line3
然后你可以这样做:

set buffer "%line1\n^line2\n&line3"
foreach line [split $buffer "\n"] {
    if {[string index $line 0] == "%"} {
        puts $buffer; # prints the entire buffer, puts $line prints this line only
        break
    }
}

我对expect不太熟悉。但是如果它只是一个普通的tcl字符串,比如:

%line1
^line2
&line3
然后你可以这样做:

set buffer "%line1\n^line2\n&line3"
foreach line [split $buffer "\n"] {
    if {[string index $line 0] == "%"} {
        puts $buffer; # prints the entire buffer, puts $line prints this line only
        break
    }
}
的-lineanchor选项使^匹配行的开头,而不仅仅是字符串的开头

if {[regexp -lineanchor -- {^%} $buffer]} {
    puts -nonewline $buffer
}
的-lineanchor选项使^匹配行的开头,而不仅仅是字符串的开头

if {[regexp -lineanchor -- {^%} $buffer]} {
    puts -nonewline $buffer
}

谢谢,@ben我有另一个for循环,我将在其中执行此命令。此
break
语句将仅从此循环或外部循环退出,我如何删除%之前的尾随空间。它将仅从内部循环中断。您可以使用
string trim
删除前导和尾随空格
string trimpleft
将仅删除前导空格。全部都在这里:谢谢,@ben我有另一个for循环,我将在其中执行此命令。此
break
语句将仅从此循环或外部循环退出,我如何在%之前删除尾随空间?它将仅从内部循环中断。您可以使用
string trim
删除前导和尾随空格
string trimpleft
将仅删除前导空格。都在这里: