あなたの問題は/
、Tcl の正規表現言語ではまったく特別ではないということです。これは、通常の印刷可能な文字以外の文字です。(正規表現を文字で囲むことは非常に一般的であるため、他の言語では少し異なり/
ます。これは Tcl では当てはまりません。) これは単純なリテラルであるため、RE で使用すると、入力でそれを期待するようになります (にもかかわらずそこにはありません); 当然のことながら、これにより RE が一致しなくなります。
output: TIP_([\d.]+)
修正:データが適切にフォーマットされているという前提で、次のような正規表現を使用します。これは、次のようなコードになります。
regexp {output: TIP_([0-9.]+)} $input -> dottedDigits
ここでは、括弧で囲まれていないものはすべてリテラルであるため、コードは一致するものを見つけることができます。括弧 (後で保存するビット) 内には、1 つ以上の数字またはピリオドが必要です。それらを角括弧セットの中に入れるのは完璧で簡単です。正味の効果は12.3.4
、 を変数に格納しdottedDigits
(見つかった場合)、一致したかどうかを示すブール値の結果を生成することです (つまり、便利に条件に入れることができますif
)。
注:角かっこはTcl 言語のメタ文字でもあるため、正規表現は中かっこで囲まれています。RE を中かっこで囲むと、スクリプトの誤解による問題が回避されます。(代わりにバックスラッシュを使用することもできますが、見苦しくなります…)