2
我使用Expect
作爲測試框架並編寫一些輔助函數來簡化expect
命令的匹配模式的輸入。將字符串放入TCL的正則表達式中
所以我尋找那些將任何字符串轉換成字符串,其中所有特殊的正則表達式的語法逃脫(如*
,|
,+
,[
和其他字符)功能,這樣我就可以把任何字符串轉換成正則表達式,而不必擔心我打破正則表達式:
expect -re "^error: [escape $str](.*)\\."
refex "^error: [escape $str](.*)\\." "lookup string..."
對於expect -ex
和expect -gl
這是很容易寫逃生功能。但對於expect -re
這是很難,因爲我是新手,以TCL ......
PS我寫這篇文章的代碼,目前對其進行測試:
proc reEscape {str} {
return [string map {
"]" "\\]" "[" "\\[" "{" "\\{" "}" "\\}"
"$" "\\$" "^" "\\^"
"?" "\\?" "+" "\\+" "*" "\\*"
"(" "\\(" ")" "\\)" "|" "\\|" "\\" "\\\\"
} $str]
}
puts [reEscape {[]*+?\n{}}]
謝謝!我在tcl wiki上看過這個,但不明白這個技巧。 +1 – gavenkoa 2013-02-23 18:40:06
我找不到原始鏈接,但這有幫助http://wiki.tcl.tk/989(正則表達式示例)。 – gavenkoa 2013-02-23 18:43:09
@gavenkoa你不瞭解它嗎?我們很樂意幫助您理解。 (雖然可以更好地完成自己的問題,以便其他人更容易搜索,但只要它們不同,就可以提出多個問題 - 在Stack Overflow中絕對可以。) – 2013-02-24 13:20:26