James の回答にいくつかの具体例を追加したいと思います。正規表現に基づいてテキストのセクションを引き出すために、この演算子を使用しました。
Net::SSH を介してリモート サーバーでコマンドを実行するツールを作成していました。この特定のサーバーには、セッションがログイン セッションであるかどうかに関係なく、MOTD を出力するという厄介な習慣がありました。これにより、コマンドを実行して出力を取得すると、大量のガベージが返されました。私はサーバーのセットアップにあまり影響を与えていなかったので、区切り文字を出力する小さなスクリプトを作成し、プログラムを実行してから、別の区切り文字を出力しました。出来上がりはこんな感じでした。
Welcome to Server X!
+----------------------------------------------------------------------+
| Use of this server is restricted to authorized users only. User |
| activity may be monitored and disclosed to law enforcement personnel |
| if any possible criminal activity is detected. |
+----------------------------------------------------------------------+
----------------------------------------------
Setting up environment for user Adam.
----------------------------------------------
>>>>>>>>>>>>>>>>>>>>>>>>>
Program Output
<<<<<<<<<<<<<<<<<<<<<<<<<
フリップフロップ演算子は、必要な出力を含むコードのセクションだけを引き出す便利なショートカットでした。25 より大きい ">" に一致する正規表現を使用して一致を開始し、25 よりも小さい "<" に一致して一致を終了しました。
output.each { |line| puts line if line[/^>{25}/] .. line[/^<{25}/] }
出力
>>>>>>>>>>>>>>>>>>>>>>>>>
Program Output
<<<<<<<<<<<<<<<<<<<<<<<<<
私が見たほとんどの例では、正規表現に基づいて、ファイルまたは配列からデータのチャンクを取得していました。頭に浮かぶ他の例としては、git マージの競合、従来のフラット ファイル システムからの特定のレコード (ファイルに書き込まれた構造体など)、およびログ ファイルの抽出があります。
基本的に、個々の行のコンテンツだけでなく、開始データと終了データに基づいてセクションを引き出す必要があるときはいつでも。単純な正規表現よりも少し複雑ですが、パーサーを作成するよりは簡単です。