TCL で文字列をフラット リストに解析しようとしています。
文字列の形式は次のとおりです。
name1='value1',name2='value2',name3='value3'
名前と値を次のようなリストにキャプチャする方法があるかどうか疑問に思っています。
{name1 value1 name2 value2 name3 value3}
'
名前または値自体には、または=
またはのような文字を含むものを含めることができることに注意してください。,
まあ、可能です
set data {name1='value1',name2='value2',name3='value3'}
foreach {- key value -} [regexp -all -inline {(.*?)='(.*?)'(,|$)} $data] {
lappend result $key $value
}
注: キーが 1 回しか発生しない場合は、辞書 ( dict set result $key $value
) を使用することをお勧めします。
負の文字クラスでそれを行うことができます
set s {name1='value1',name2='value2',name3='value3'}
set result [regexp -inline -all -- {[^=',]+} $s]