ええと、私は過去10時間以上インターネットを検索してきましたが、これに関しては運も成功もありませんでした。
irc制御コード(色など)をhtmlに変換しようとしています。これは、eggdroptclバインドイベントから取得した入力テキストです。太字/下線は正常に機能します。イタリックはまだテストされていませんが、問題はありません。
..問題は、私の正規表現が間違った文字と一致しているように見えることです。\003(\d+)[,]?(\d*)(.*?)
正規表現を設定しました-コーディング(主にphp / js)の以前の経験からの知識があると想定しました-制御文字の後の数字が必要なため、リストのインデックスとして使用するために、と照合します。必要なhtmlの16進色を引き出します。ただし、プルされる数字は、端末に正しく表示されない数字でさえないように見え、代わりに制御文字であるように見えます(geditを使用した私の経験から)。
私のプロセスのコードは以下のとおりです。これは、テキストをファイルに記録する、より大きなスクリプトの一部です。他のすべては機能しますが、このプロセスです。
質問に..私はここで正確に何を間違えましたか?私が受け取った唯一のエラーメッセージは、「(制御文字)無効なインデックス」に似たものです。
proc logger:control {text} {
set val {
{FFF}
{000}
{00007F}
{009000}
{FF0000}
{7F0000}
{9F009F}
{FF7F00}
{FFFF00}
{00F800}
{00908F}
{00FFFF}
{0000FF}
{FF00FF}
{7F7F7F}
{CFD0CF}
}
while {[regsub {\002(.*?)\002} $text {<b>\1</b>} text]} {}
while {[regsub {\037(.*?)\037} $text {<u>\1</u>} text]} {}
while {[regsub {\035(.*?)\035} $text {<i>\1</i>} text]} {}
while {[regsub {\003([0-9]+)[,]?(\d*)(.*?)} $text "</span><span style='color: [lindex $val \1] ;'>\3" text]} {}
# ^ the line that throws the error
while {[regsub {\003[^\d]} $text {$text</span>} text]} {}
return $text
}