[過去ログ]
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net (1002レス)
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1489511075/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
889: デフォルトの名無しさん [sage] 2019/07/17(水) 08:28:41.50 ID:2/Bgill9 >>873訂正 俺は俺のケースだけ考えていたが、これだと871内URLの筆者のケースと合致しない。 そこで一応、両方とも合致する実装を考えてみた。 (といってもバグってる実装について推測すること自体はあまり意味がないが) Perlはおそらく、^のフラグではなくて、空文字マッチ後のそのマッチ区間の*を+にしてる。 (というより筆者もそう言っているのだが俺が早とちりしてしまった) 871のケースだと、正規表現 (?:^|>)(.*?)(?:$|<) に対して、 1回目:(?:^|
>)(.*?)(?:$|<) 2回目:(?:^|>)(.+?)(?:$|<) というわけだ。結果、2回目は「先頭、<含んだ1文字、次の<まで、となり、 その筆者の説明通り先頭タグを含んで次タグ或いは文末まで伸びることになる。 俺のケースでは、正規表現 (^|[@;])[^@;]* に対して、 1回目:(^|[@;])[^@;]* 2回目:(^|[@;])[^@;]+ だから '@time;prop1:style1;prop2:style2' に対して @time のマッチも正しく取れることになる。 こういった場合、実装者は安全側に倒したくなる物だが、 現実は安全側に倒しすぎて余分なケースを含んでしまい、結果、バグってい
るというわけだ。 JavaScriptは最高に安全な実装、「空文字マッチは1文字進める」とした。(おそらくRubyその他もそう) これだと絶対に無限ループはしないが、俺のケースでバグる。 Perlの実装だと俺のケースは通るが、871内URLの筆者のケースでバグる。 その他バグケースも出してくれれば俺の推測で合っているかどうかは答える。 http://mevius.5ch.net/test/read.cgi/tech/1489511075/889
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 113 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s