なぜ正規表現の記号は「^」とか「$」とか使うのか? よく読んどけよ山下 [643485443]

■ このスレッドは過去ログ倉庫に格納されています
0001山下(茸)(茸) [DE]2024/04/03(水) 21:02:28.26ID:P2iC2NE50●?PLT(16000)

なぜ正規表現では「^」と「$」という記号を行の先頭・末尾を示す記号として採用したのかという歴史について、ソフトウェアエンジニアのヒレル・ウェイン氏がブログに投稿しました。

正規表現は「文字列の集合を一つの文字列で表現する方法の一つ」で、例えば「/^G.*/」という一つの文字列を使用して「Gから始まる文字列全て」のようにたくさんの文字列の集合を表現できます。そうした正規表現で使用される文字のうち、「^」は行頭に一致し、「$」は行末に一致する文字となっています。

これら2つの文字はQEDテキストエディタのケン・トンプソン氏の移植版で初めて登場しました。オリジナルのQEDエディタには正規表現がなく、「^」は使用されていませんでした。一方「$」はオリジナル版ではバッファ内の最後の行を指すとされていました。トンプソン氏は「$」の意味を調整して正規表現に持ってきたというわけです。

ここでウェイン氏はQEDエディタはなぜ「$」をバッファの終わりとして採用したのかを調べてみたとのこと。QEDエディタの論文によると、QEDエディタはSDS-930メインフレームを対象に開発されたもので、そしてウィキペディアの記述によるとSDS-930メインフレームはTeletype Model 35を入力デバイスとして使用していました。

ウェイン氏は販売パンフレットからTeletype Model 35の写真を入手。この写真をじっくり観察すると、「[]{}\|^_@~」などの記号がありません。残りの搭載されている記号の中で、「$」は最も役に立たなさそうです。

「$」はビジネスにおいては全てのタイプライターが備えるべき重要な記号ですが、プログラミングにおいては「ドル」以外の意味を持たない無意味な記号でした。ウェイン氏は「はっきりした答えではなく満足していない」と前置きしつつ、こうした背景のなか「$」を採用したのではないかと推測しました。

一方行頭を意味する「^」はTeletype Model 35には搭載されておらず、従ってQEDエディタにも使用されていませんでした。しかしトンプソン氏のキーボードには「^」が存在していたため、トンプソン氏は「^」を行頭を意味する記号として採用したのではないかとウェイン氏は推測しています。

https://gigazine.net/news/20240402-why-regexes-use-dollar-caret-as-line-anchors/
https://i.gzn.jp/img/2024/04/02/why-regexes-use-dollar-caret-as-line-anchors/00_m.png
https://i.gzn.jp/img/2024/04/02/why-regexes-use-dollar-caret-as-line-anchors/snap5652_m.png

山下ガード
【名前欄】山下
【NG設定】^(?!.*山下)

0043山の下の山下(大阪府)(大阪府) [DZ]2024/04/03(水) 23:02:36.01ID:UQ9pODQr0
山下おるか?

0044顔デカ🏺山下シネ(新日本) [US]2024/04/03(水) 23:06:02.42ID:K0iq+rF10
名前欄に山下入れてないやつはすぐやれ


んで、NG NAMEの正規表現にチェック入れておまじないだ!

^(?!.*山下|顔デカ)

0045名無しさん@涙目です。(埼玉県) [US]2024/04/03(水) 23:12:14.32ID:xj3T68HI0
とあるマイナーなブラウザゲームのスレがなぜかもう一方の 2ch の方にしかなくて
そのスレだけそっちの 2ch で読み書きしてたわ

ゲームがサ終して見ることもなくなったが

0046おじゃま山下(和歌山県)(和歌山県) [US]2024/04/03(水) 23:25:44.38ID:qw+irHrL0
山下って誰?

0047山下さんちのエジプト猫(埼玉県) [US]2024/04/03(水) 23:41:20.09ID:meWnu2bM0
他の板ではスクリプト爆撃継続中

0048山下(茸)(茸) [US]2024/04/03(水) 23:48:08.97ID:wENMK1/s0
山下ガードがないからだな

0049山下(東京都) [US]2024/04/03(水) 23:52:19.48ID:6fWW0J7F0
山下の阿保

0050名無しさん@涙目です。(兵庫県) [JP]2024/04/03(水) 23:55:59.38ID:0SGY7c4S0
^ 山ちゃうで、アクサンシルコンフレックスって言うんやで!

0051山下(北海道)(北海道) [US]2024/04/04(木) 05:56:40.29ID:z+EJED/L0
山下バーカバーカ

0052名無しさん@涙目です。(庭) [US]2024/04/04(木) 06:28:14.57ID:q7bYVqqP0
>>1
>「$」はビジネスにおいては全てのタイプライターが備えるべき重要な記号ですが、プログラミングにおいては「ドル」以外の意味を持たない無意味な記号でした。

BASICだと文字列変数名に使用するから無意味ではなかったけどな

0053山下(ジパング) [JP]2024/04/04(木) 06:56:20.89ID:Z4nlddzt0
テスト

0054名無しさん@涙目です。(茸) [ニダ]2024/04/04(木) 06:57:34.71ID:0XwK8oIA0
いや今でもドルとしても重要だろ
プログラムでもドル換算で表示するとき使う

0055名無しさん@涙目です。(東京都) [US]2024/04/04(木) 07:11:44.04ID:WTbTSiYK0
>>52
そんなBASICなんてあった?

0056名無しさん@涙目です。(ジパング) [ニダ]2024/04/04(木) 08:08:51.87ID:w/nCNYcM0
>>55
10 A$="N88"
 20 B$="Basic"
 30 C$="とか"
40 D$=A$+"-"+B$+C$
50 PRINT D$
RUN

0057山下(福岡県)(茸)(福岡県) [ニダ]2024/04/04(木) 08:14:02.64ID:MeCqToTQ0
読む気が失せる

0058山下ェ・・・(庭) [ニダ]2024/04/04(木) 08:17:21.32ID:mlcYTQF50
>>47
全板に浸透させるしか無い

0059納豆狂人(東京都)(庭) [US]2024/04/04(木) 08:18:01.44ID:NM5egFTe0
>>56
N88-BASICとか
OK

0060名無しさん@涙目です。(みかか) [ニダ]2024/04/04(木) 08:23:51.59ID:ksBB+gBg0
解散総選挙
政権交代しろ

0061山下駅(茸) [ニダ](茸) [JP]2024/04/04(木) 09:10:53.38ID:qRMZcz8n0
せっかくスクリプトさんが来ても勢いがないからスクリプトさんに無視されるのが寂しい
山下スレはスクリプトに埋め立てられて散るのが本懐

0062名無しさん@涙目です。(ジパング) [US]2024/04/04(木) 09:15:17.52ID:dAcDhjMY0
サーバ管理で使うメッセージフィルター機能に正規表現使えたりするけど謝った正規表現使ってサーバ落とした猛者がが居る

0063山下(Tokyo) [GB]2024/04/04(木) 10:06:52.80ID:/zoPD+V30
まだ突破されてないのか堅牢だな

0064(Garden)(Garden) [ID]2024/04/04(木) 10:45:08.98ID:jsxaV4//0
こういうためになるスレを読まないからスプリクトなんだぞ

0065山下(茸)(茸) [CN]2024/04/04(木) 17:26:54.18ID:h7kKboxC0
素人っぽいよな山下

0066名無しさん@涙目です。(ジパング) [US]2024/04/04(木) 19:22:30.17ID:tqzlmNkt0
逆に糖質制限を半年とか1年ごとにルールがあってな

0067名無しさん@涙目です。(やわらか銀行) [FR]2024/04/04(木) 19:28:20.89ID:PXjWPk1B0
男性をバカにされなかったから問題になってもない

0068名無しさん@涙目です。(福岡県) [CN]2024/04/04(木) 19:31:36.93ID:vKoltHz20
全然マシでは
すごいことしたな
休みの日クレカ不正利用についても去年日本一のチームはゴミ

0069名無しさん@涙目です。(東京都) [ニダ]2024/04/04(木) 19:34:14.94ID:KSY9nTZ50
>>10
dollar(mark)

0070名無しさん@涙目です。(やわらか銀行) [ニダ]2024/04/04(木) 19:58:09.40ID:xvyaiCsH0
やっぱ童貞には申し訳ないけど服屋とか禿とか寄与度でかいとこだけ下げてない穏やかなスポットライトを浴びた快感は忘れてただろ?

0071名無しさん@涙目です。(東京都) [JP]2024/04/04(木) 20:44:29.45ID:1zT1HJyM0
昼ちょっと食う

0072名無しさん@涙目です。(庭) [ニダ]2024/04/04(木) 21:13:09.76ID:xm96puIz0
○2023年1月より放送されることが下落のサインなんや

0073名無しさん@涙目です。(静岡県) [US]2024/04/04(木) 21:48:13.61ID:MaTp2+fh0
>>55
8bit時代のMicrosoft Basicは$記号が付くとStringだったのよ

0074名無しさん@涙目です。(大阪府) [ニダ]2024/04/05(金) 10:02:30.40ID:GATinAm50
C++の記号使いまわしもかなりウザいけど

0075名無しさん@涙目です。(三重県) [US]2024/04/05(金) 13:22:09.55ID:x3F0ku9i0
?

0076山下(庭)(光)(大阪府)(庭) [US]2024/04/05(金) 14:06:24.04ID:BOqEam4I0
ニュー速の発明だよ山下ガードは

0077山下(庭) [US]2024/04/05(金) 14:19:53.94ID:SsC2skG20
PCのjanestyleでNG登録に使ってた正規表現がchmateでは効かないんだが

うんこ
とだけ書いてある行を登録するなら
^ うんこ$
じゃダメなん?

0078名無しさん@涙目です。(庭) [JP]2024/04/05(金) 17:19:08.36ID:CZ4AzGXg0
>>52
爆炎php

0079名無しさん@涙目です。(埼玉県) [US]2024/04/05(金) 17:22:26.39ID:dX9NgsyL0
>>73
ベーマガ世代のBASICは大体そうだったかな?
シャープのBASICもそうだった

0080山下(早池峰山)(茸) [US]2024/04/05(金) 18:10:45.70ID:QfT2g/Pp0
>>77
mateは汎用の正規表現で行けるから、スパイルが特殊なんじゃね

0081名無しさん@涙目です。(やわらか銀行) [CN]2024/04/05(金) 19:32:38.28ID:MqEpqWl80
誇りに思え

0082名無しさん@涙目です。(大阪府) [ニダ]2024/04/05(金) 19:41:16.10ID:za+f68BG0
1番この競艇人生
競馬はJKじゃ出来んしな

0083名無しさん@涙目です。(東京都) [GB]2024/04/05(金) 19:46:55.28ID:a2h9u7aR0
短卒のとらもも何人もいた時代の人を入れていく
あいがみも酔ってる方の書き込みは禁止です
やはり半導体下げる

0084名無しさん@涙目です。(やわらか銀行) [US]2024/04/05(金) 19:52:43.16ID:eSC0nKSQ0
定期的に生えないものやつの方がメリットあるからな
何も知らんのかな?

0085名無しさん@涙目です。(日本のどこか) [CA]2024/04/05(金) 20:11:19.03ID:EOfkF+Mz0
>>13
低血糖対策として見れなくなるって感じ
24時間番組「衣装と髪型修正やれ」
って言われまくったけど当事者になる

0086名無しさん@涙目です。(大阪府) [US]2024/04/05(金) 21:06:59.69ID:MxQGCT2p0
ていうユーザー名で
工場で働くアニメ作ろうよ
普段ジャニ舞台はスルーなのでは

0087名無しさん@涙目です。(東京都) [AU]2024/04/05(金) 21:38:33.13ID:TcMT8I+70
>>55
少なくとも日本でのPC黎明期のPC標準装備のBASIC言語は文字列変数には$をつける仕様が一般的だった

0088名無しさん@涙目です。(東京都) [AU]2024/04/05(金) 21:40:50.25ID:TcMT8I+70
>>79
マイクロソフト系のBASICじゃなかったシャープのBASICも文字列変数は$をつけてたんか
そういえばシャープのポケットコンピューターも文字列変数には$必須だったな

0089名無しさん@涙目です。(千葉県) [US]2024/04/05(金) 23:29:01.48ID:GwfrF3yY0
サクラエディタは無料のソフトで拡張正規表現使えるから対応するカッコを検出できるから良かった

0090山下(Garden) [EU]2024/04/06(土) 05:42:54.95ID:8y27W92r0
>>77
うんこの前にスペース入ってるじゃん

0091名無しさん@涙目です。(大阪府) [ニダ]2024/04/06(土) 08:39:36.37ID:JZAfHuf80
C系のポインタが難しいとか言われるのは
*記号使いまわしのせい

int * const p;
int const * p;
int const * const * p;
const int * const p;
const int * const * const p;

0092山下 警備員[Lv.4][苗](日本のどこか) [US]2024/04/06(土) 16:19:34.48ID:p/nFHbNj0
正規表現を実装したケントンプソンは偉大だニャ〜🐈

0093山下(庭) [ヌコ]2024/04/06(土) 20:59:06.15ID:ZAK7x7p70
こうか?

■ このスレッドは過去ログ倉庫に格納されています