[過去ログ]
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489511075/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
872: デフォルトの名無しさん [] 2019/07/14(日) 13:28:58.74 ID:wR6d2dgQ >>868 PCREに統一中だという主張の根拠を聞いたんだがそれへの回答はないわけだ PCREが素晴らしい実装で最初に触っとけばいいというのは同意するが, それが最良だなんてのはあり得ないし単なる妄想だよ http://mevius.5ch.net/test/read.cgi/tech/1489511075/872
873: デフォルトの名無しさん [sage] 2019/07/14(日) 14:15:14.24 ID:LdVrbIxu >>871 ああなるほど、Perlも似たようなゴミ実装になってるな。 > そこで,Perl では空文字列に マッチするような場合には,初回は空文字列がマッチするがそれ以降は マッチせずに必ず 1文字分は進むようにマッチしようとする. これも実装ミスだな。 正しくは、このフラグを「空文字以外のマッチごとにセット」すればいいだけで、修正は1行で済むのだが、こちらも今更なのだろう。 「初回は」というのが間違いで、「空文字にマッチした直後は」が正しい。 ついでにもっと具体的に言っておくと、「初回は」というのが正しければ、 今の実装は検索起動時にフラグをセットして空文字マッチ後にリセットしているはず。 このフラグを「空文字以外のマッチ後」に毎回セットし直すように1行入れる。これで直る。 君がPERL等のOSSか何かにcontributeする気があって修正案を出してくるのなら見てあげるけど。 (俺自身ではそこまでやる気はない) まあしかし、JavaScriptだけがゴミじゃない、ってのは分かった。 というかもしかしてJavaScriptの実装ってPERL実装互換に敢えてしてる? >>872 お前は何派なんだよ? JavaScriptに関してはMDNでも前は「PCREで大体使えます」みたいな事書いてたぞ。 最近大幅リニューアルしてその記述はなくなったが。 (というより色々見にくくなってあまり確認してない) 鬼車派ならこの手の「実装ミス」をひたすら潰しておけばワンチャンあるかもしれんよ。 JavaScriptにしてもPerlにしてもこの辺のミスは確実に足枷になってる。 具体的に言うと遭遇した全プログラマが数時間ずつ無駄に検索その他をさせられる羽目になってる。 これは「新規プログラマ」からすると上達を妨げる障壁でしかない。 JavaScriptで言うと「IEデハー」な件を全部暗記してて今もそれにすがっている奴のウザさみたいなもんだ。 仕様バグがない、というのはそれなりに武器になる。 http://mevius.5ch.net/test/read.cgi/tech/1489511075/873
878: デフォルトの名無しさん [sage] 2019/07/15(月) 16:42:33.19 ID:xqOJLOC2 >>877 テストしてくれたって事か?なら一応まとめておく。 /(^|[@;])[^@;]*/g に対してテスト文字列 '@time;prop1:style1;prop2:style2' で PCRE: ["", "@time",";prop1:style1", ";prop2:style2"] JavaScript, Python, Go, Ruby, : ["",";prop1:style1", ";prop2:style2"] 結論、PCRE以外全部ゴミ 現時点でPCREが最良だ馬鹿タレ >>872 お前が何派か知らんが、PCREが最良でないと言い張るのなら少なくとも通るライブラリを具体的に提示しろ ただまあこれにはちょっと情状酌量の余地有りで、 おそらく ^ が「先頭文字」ではなく「位置」にマッチすると再定義したのはPerlだ。 そもそもBREには | がない。従って (^| のような「先頭の空文字」マッチなんて書けない。 だからBREだと先頭の「位置」なのか「文字」なのかを厳密に区別する必要がない。 | が導入されたのはEREからだが、EREなんて大して使われてない。 結果、BRE育ちの連中が「位置」だと厳密に認識せずにコーディングすると間違える、というわけ。 そしてJavaScript, Python, Go, Ruby は全滅だ。 JavaScriptに関してはPerlを模倣したわけでもなく、単なるミスだ。言語内不一致を生じているし。 他言語は知らん。 Rubyみたいに「実装が仕様だボケ」と言い張る糞言語ではこの手の仕様バグを永久に修正出来ない。 よって新人は毛嫌いして離れていく。当たり前の話だ。 JavaScriptはおそらくバグだと認識されているが、今更直せない。 Perl6はこの点、仕様と実装を分離したから、バージョンアップと共に確実に修正する。 従って最良は現時点でもPCREだし、今後ともPCREだ馬鹿タレ >>872 http://mevius.5ch.net/test/read.cgi/tech/1489511075/878
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.236s*