[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
42
(2): 29 [sage] 2021/11/19(金)20:58 ID:rZqXBgxj(1/2)
これの検証してみた

Absence operator is broken #150
https://github.com/k-takata/Onigmo/issues/150

・検証コード (ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x64-mingw32])
p /(?~a.*[bv].*c)/.match("000a111v222c333b444c555")

・結果
#<MatchData "000a111v222c333b444">

a〜v〜c を含んでしまってるのでバグで確定
原因は最初にマッチした段階で検索を打ち切ってしまっていて
別のパターンを見逃している

別のパターンを見つける必要があることは非包含オペレータ提案者さんの論文で
図付きで説明されてるけどこれを見落としてしまったオチ?

直すには論文通りに実装すれば良いだけなので直せないことは無さそう
自分がプログラミング出来れば直したいけどミジンコなので手も足も出ず..
-------------------------------------------------------
>>41 おつー
43: 29 [sage] 2021/11/19(金)23:35 ID:rZqXBgxj(2/2)
ついでにもう1つだけ

Use of \K when the string to match after \K can be empty #152
https://github.com/k-takata/Onigmo/issues/152

これは \K を使ってゼロ幅マッチになった場合に次の検索開始位置が
予期せず1つ進んでしまう問題のようだ

gsubの仕様かなと思ったけど (?<=\w) と \w\K の2つが違う結果になるのは
違和感ある、\K での ゼロ幅マッチ後の pos を進まないようにすれば直りそう

takata先生の代わりにちゃちゃっと始末してくれるスーパーハカーさん募集
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s