^と$はいつ、なぜ「行の始まり」と「行の終わり」の意味がありますか?

^と$はいつ、なぜ「行の始まり」と「行の終わり」の意味がありますか?

多くのコマンドラインツール(grepflexなど)は^記号を使用して「行の始まり」を表し、$記号を使用して「行の終わり」を表します。この合意はいつ行われましたか?この目的のために2つの文字を予約するのは合理的に見えますが、最新のキーボードでは$記号が左側にあることが少し奇妙です。^

これは完全に恣意的な決定ですか?これは古いキーボードレイアウトからのものですか?一部の古いツールがこの方法で作業を実行することを決定したため、このルールは使用されますか?

答えが何であれ、これを文書化した主なソースはありますか?

答え1

QEDエディタ、1965年に書かれましたバークレー時間共有システム$使用ファイルの最後の行のアドレス指定ed今日のように。バラよりexvivimマニュアルページ 2-1。しかし、元のQEDエディタでは正規表現は許可されませんでした。

Ken Thompsonは、後で(「1960年代後半」)正規表現を実装した最初のエディタであるMulticsのQEDバージョンを作成しました。編集者はed1969年にKenのUnix開発に大きな影響を与えました(後で1971年頃にDennis Richieによって「完成」)。苦情により、edBill Joyは1977年にPDP-11の最初のBSDリリースを実装し、exその一部になりました。vi

^and式$とPOSIX正規表現の構文となった多くの部分と今日の意味がKenのQEDバージョンで実装されました。バラよりマニュアル4ページ

これらの特定のシンボルの選択がどこから来たかはわかりませんが、$最後の行を指定するために使用される方法で判断すると、すでに「最終的な」意味があります。

一部の端末では^この文字を生成できません。これにより、\'KenのQEDエディタを代わりに使用できます^(参照:ベル研究所ハンドブック)。

答え2

このコピーのed(I)日付は71年11月3日です。は、Unixの最初のバージョンでedQEDに基づいていることを確認し、当時の現在の意味を^示します。$

  1. ^正規表現の先頭の曲折記号文字()は、行の先頭のNULL文字と一致します。
  2. 正規表現の終わりにある通貨記号()は、行の$末尾にあるnull文字と一致します。

このメモそしてウィキペディアページ grepgrep1970年代初頭に作成され、同じ正規表現構文が使用されていることを示します  ed


正規表現の概念は、コンピュータユーティリティで正規表現を使用するよりも約20年前のものです。  Wikipedia 「正規表現」ページ そして このスタックオーバーフローの質問 アメリカの数学者スティーブン・コール・クリーンは、正規表現を作成するか、少なくとも正規表現を説明し、用語を作成した功績を認められました。彼の論文は多くの歴史的文書に記載されています。 ニューラルネットワークと有限オートマタのイベント表現(PDF)。 1951年12月15日付で作成された101ページ分量の文書は読みにくく(私の知る限り)いいえ^と構文を参照してください$。ただし、これは*論文49ページ(PDFファイル52ページ)の「0個以上の前の項目」を意味します。これは(やや)」として広く知られています。クリント」。

関連情報