我正在使用以下代碼來匹配文本,如cell ("acf12bcjd6")
。引號內的值不斷變化,我必須捕獲所有這些值。我使用的代碼是:嘗試使用正則表達式和foreach匹配文本
foreach searched_data $final {
[regexp {cell\(.*\)+} $searched_data match]
puts "$match"
}
但我得到一個錯誤,說「無法達到匹配,沒有這樣的變量」。我不明白我的錯誤。我是否正確?
我正在使用以下代碼來匹配文本,如cell ("acf12bcjd6")
。引號內的值不斷變化,我必須捕獲所有這些值。我使用的代碼是:嘗試使用正則表達式和foreach匹配文本
foreach searched_data $final {
[regexp {cell\(.*\)+} $searched_data match]
puts "$match"
}
但我得到一個錯誤,說「無法達到匹配,沒有這樣的變量」。我不明白我的錯誤。我是否正確?
您的程序失敗,因爲正則表達式模式不匹配的字符串,這樣match
沒有被設置。試試這個
foreach searched_data $final {
if {[regexp {cell +\(\"(.*)\"\)} $searched_data junk match]} {
puts stdout $match
}
}
該模式假定cell
和左括號之間的空格是可選的。我也假設你想剝去引號。
難道你不能只使用RegEx存儲'。*'嗎? 'cell \((。*)\)+'然後用'\ 1'來獲取它。此外,似乎你錯過了你的表達空間(或放在一個例子中) –
僅供參考:問題已經開始[here](http://stackoverflow.com/q/17434973/1578604) – Jerry