1

または/a/b/c.d/f. の間にあるすべての文字が必要なような表現があります。コマンドを使用してそれらを分割しようとすると、結果はとして取得されます。これらのnull文字列を回避するにはどうすればよいですか?これを使用してこれを行う方法はありますか?/.split{} a b c d f {}regsub

4

3 に答える 3

3

これらの空の文字列( nullではありません)は、文字列の最初と最後に区切り文字があることを示しています。2つのセパレーターが隣り合っている場合にも、それらを取得できます。このsplitコマンドは、実際には、より「通常の」テキストの単語ではなく、レコードを処理することを目的としています。

非セパレーター部分を抽出する最も簡単な方法の1つ(注:ここで問題をひっくり返しました)は、を使用することregexp -all -inlineです。これにより、一致するすべてのもののリストが返されます。

set pieces [regexp -all -inline {[^/.]+} "/a/b/c.d/f."]

これには少し注意してください。サブ正規表現をキャプチャしている場合は、-all -inlineオプションを使用しているときにも返されます。

于 2012-11-06T21:41:43.440 に答える
0

regsubを使用して、必要な結果が得られました。これは「regsub-all{(/)|(。)} $ a "\ t" result」であり、これはnull文字列を提供しませんでした

于 2012-11-06T20:02:42.350 に答える
0

私は2つの異なる方法を実行しました:

  1. それらを一致させて保存する
  2. それを交換する(正確にはtclではない)

少しお役に立てば幸いです。大文字を追加したい場合は、それも使用しA-Zてください。

于 2012-11-06T20:18:34.920 に答える