0
我是TCL編程新手。我想寫一個tcl代碼,檢查給定字符串中是否存在HAT GET DOT模式,如果存在,我們應該顯示HAT GET DOT出現在給定字符串中的模式。如果字符串中存在多個模式,則應顯示所有匹配的模式。我寫了下面的代碼,但它只顯示一個模式,即使有多個模式匹配給定的字符串。TCL模式匹配
任何人都可以幫忙嗎?
預先感謝您
代碼:
set data1 {asdGETdf ferGETfhgDOT} #data1 is the given string
foreach index $test_data1 {
set result [regexp {ABC|ACC|ADC|AXC} $index match]
puts "\n$index"
if { $result==1} {
puts "MATCH:$match"
} else {
puts "NO MATCH"
}
}
output:-asdGETdf
MATCH:GET
ferGETfhgDOT
MATCH:GET
對於第二個字符串我希望它獨顯GET
和DOT
(不GET
在輸出)。
我認爲這是因爲正則表達式一旦找到匹配就結束搜索。但如何顯示所有模式匹配?
感謝傑裏......至於我是新來的TCL可以請你解釋,爲什麼我們使用 - 甚至當我們得到的答案不正確 - – joe
@joe哦,這只是一個習慣礦。 '--'表示標誌的結束。如果你的模式以'-'開頭,這很重要,否則它可能會導致Tcl將它理解爲另一個標誌,如果這不是一個有效的標誌,則會給你錯誤。 – Jerry
在上面的代碼中,我可以使用一個變量來存儲模式HAT GET DOT並使用該變量在正則表達式中設置模式{HAT GET DOT}; regexp -all -inline - {$ pattern} $ index – joe