文字列がルールのリストと一致するかどうかを検証しようとしています。これらのリスト項目の一致する例えば は、一致ルールのそれに対して:ルールリストに対するtclの効率的な文字列検索
set ListToCheck [list abc_123 def_123 ghi_456 abc_345 xyz_987]
set RulesToCheck [list *_123 abc_*]
は、私は最終的には、文字列の長いリストをチェックするルールの多くの数十の長いリストを持っているし、常に成長します。私は最初の試合だけが欲しい。
私が思いついた方法は少し軽い力のようです。もっと洗練された方法が必要だと思っていました
set match 0
set matchedrule {}
set matchdict {}
foreach value $ListToCheck {
foreach rule $RulesToCheck {
if {[string match $rule $value] == 1} {
set match 1
set matchedrule $rule
break
}
}
<take some action on the $value and $rule matched here>
...
}
これが最善の方法ですか?私はよりよい方法があるべきであるように感じる。