@hamu3864kA (しか はむ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

特定の正規表現の読み方について教えて下さい

解決したいこと

ターミナルで色付きの文字を含んだ標準出力をファイルにリダイレクトしたあと、制御文字を削除する方法を調べていたところ、以下のような正規表現をネット上で発見しました。

(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]
  1. \x9B は何を表しているのでしょうか

    • \x1BESC なのはわかるのですが、ASCII上何がマッピングされているのか
  2. [0-?] はどういう意味になるのでしょうか

    • 色々試してみたら数字もしくは?に該当するっぽいのですが、範囲指定でそういったことができるのか調べてもわかりませんでした
  3. [ -\/] はどういう意味になるのでしょうか

    • これも文字クラスの範囲なのでしょうか。
  4. [@-~] はどういう意味なのでしょうか

    • これも文字クラスの範囲なのでしょうか。
0 likes

1Answer

\x9B は Control Sequence Introducer で、役割は \x1B[ (ESC + [) と同じく、制御シーケンスの開始を表します。

2〜4はいずれも文字クラスで、ある範囲に含まれる文字いずれか1つを表します。たとえば2なら ASCII コードで 0 から ? までの範囲、つまり 0123456789:;<=>? のいずれかを表します。詳しくは ASCII コード表を見てください。

なお3は分かりづらいですが (半角スペース)から / (スラッシュ)までです。スラッシュが \/ とエスケープされているのは正規表現リテラル /.../ の中に書く想定だからでしょう。

1Like

Comments

  1. @hamu3864kA

    Questioner

    詳しい回答ありがとうございます!すっきりと理解、納得ができました!

Your answer might help someone💌