[過去ログ] Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
877(2): 2019/07/15(月)15:22 ID:y88H95dP(1) AAS
Ruby で、
str = "@time;prop1:style1;prop2:style2"
re = /((^|[@;])[^@;]*)/
p results = str.scan( re )
# [["", ""], [";prop1:style1", ";"], [";prop2:style2", ";"]]
[ 0 ]がマッチした部分、[ 1 ]がキャプチャー部分
>>862
の、["", ";prop1:style1", ";prop2:style2"] と同じ結果
878: 2019/07/15(月)16:42 ID:xqOJLOC2(1) AAS
>>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
895(2): 877 2019/07/17(水)10:06 ID:u050lnGw(3/3) AAS
>>889
Ruby で、
str = "@time;prop1:style1;prop2:style2"
re = /((^|[@;])[^@;]*)/
p results = str.scan( re )
# [["", ""], [";prop1:style1", ";"], [";prop2:style2", ";"]]
[ 0 ]がマッチした部分、[ 1 ]がキャプチャー部分
>>862
の、["", ";prop1:style1", ";prop2:style2"] と同じ結果
# * を、+ に変えた。
re_2 = /((^|[@;])[^@;]+)/
p results_2 = str.scan( re_2 )
# [["@time", "@"], [";prop1:style1", ";"], [";prop2:style2", ";"]]
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s