[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
8: デフォルトの名無しさん [] 2021/11/04(木)11:42:25.33 ID:diIHvWke(1/2)
DeNAが個人ブログから正規表現の表丸パクりしてたのワロタ
47
(1): 29 [sage] 2021/11/25(木)18:40:51.33 ID:QsU6pq8j(1/2)
Onigmo のバグの原因となった個所が判明したので書いておこう

正規表現における非包含オペレータの提案
https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-paper.pdf

この論文のサンプルコードに下記のメソッドがある

def try_alt(r1, r2, str, pos, &block)
try(r1, str, pos, &block)
try(r2, str, pos, &block)
end

これは正規表現で言うと r1|r2 の "|" にあたる動作をする部分のメソッドだが
このサンプルコードでは r1 のマッチが成功した後でも必ず r2 を試す仕様になっている

しかし Onigmo の検索方式では r1 がマッチした後に正規表現の最後までマッチが
成立した場合には r2 が試されない仕様になっている
これにより r2 を通る一部パターンが見落とされる結果となりバグとして出現した

論文中の非包含オペレータのメソッドである def try_absent(r, str, pos) は
上記の def try_alt を使う前提で書かれたものなのでこれをそのまま Onigmo には移植出来ない

サンプルコード方式での処理量を考えるとおそらくこれとはまったく別のアルゴリズムで動く
動作の軽いメソッドを自作しないと Onigmo には導入出来ないのではないだろうか..
98
(1): デフォルトの名無しさん [sage] 2021/12/22(水)11:53:44.33 ID:dK2CjfaN(2/2)
>>96
>>74と同じ手法でやればいいじゃない
192
(1): デフォルトの名無しさん [sage] 2022/02/01(火)12:52:35.33 ID:xlL1v7Ej(1)
\K not permitted in lookahead/lookbehind in regex; marked by <-- HERE in m/(?<=\K <-- HERE a)b/
225
(1): デフォルトの名無しさん [sage] 2022/04/09(土)11:11:19.33 ID:RvdBAddV(1/2)
●正規表現環境: VS Code
●検索か置換か: 置換
●対象データ:24時間表記の時間
●説明:

24時間表記を12時間表記にしたい。

●例:
23:59:30 → 11:59:30

正規表現で可能ですか?
244: デフォルトの名無しさん [sage] 2022/04/24(日)14:27:40.33 ID:+3jFx4NA(1)
したい事が検索と書いてあるのに、整形したいですってどういう事?
整形したいって事は置換なの?
323: 298 [] 2022/07/01(金)21:06:43.33 ID:FKzEqydA(14/16)
>>322
どうもです。 了解しました。

.+だと文字が何個あってもいいよ、です。
こういうので、
文字でも記号でも改行でも何個あってもいいよ、はないでしょうか?
あるとすれば、
店「」+住所
を、
,
に置換すればいいだけの話なんだけど。
324: デフォルトの名無しさん [sage] 2022/07/01(金)22:01:19.33 ID:TkUsKSE8(1/2)
.(ピリオド)は改行コードを除く任意の1文字にマッチする
つまり.*や.+だと改行のところでストップするということ
574
(1): デフォルトの名無しさん [sage] 2022/12/26(月)08:18:23.33 ID:LqfRRdYe(1)
>>573
知識以前にお前馬鹿そうだから、>>2のテンプレ使って書き直して
577
(1): デフォルトの名無しさん [sage] 2022/12/27(火)17:03:22.33 ID:G2ophMPv(1)
テキ(?!..(?<=仮テキスト))
641: デフォルトの名無しさん [sage] 2023/02/16(木)22:56:05.33 ID:Tpu7Mxzn(1/2)
正規表現で*ではなく0文字以上n文字以下って指定の仕方どうやるんだっけ
*はセキュリティホールになるから使うなみたいなのをどこかで見たので
734
(2): デフォルトの名無しさん [sage] 2023/06/22(木)23:53:09.33 ID:nJDgsm3N(3/3)
GJ
[[:punct:]] これいいね、覚えとこ
(()+){2,}は繰り返しが二重になっててReDosを狙われる懸念があるから
++や(?>)を使ったほうがいいかも
正規表現エンジンの内部でも対策はしてると思うけど念のために
759: デフォルトの名無しさん [sage] 2023/06/24(土)17:35:54.33 ID:X4q59utv(4/4)
PHPだけじゃなあ
結局、事故らない為には長さの違うダブリは取り除いておくほうが無難ってことか
846
(2): デフォルトの名無しさん [] 2023/09/03(日)17:20:26.33 ID:ruPOb/mk(1/2)
訂正がありました
よろしくお願いします

●Regular Expressionの使用環境
Lua

●検索か置換か?
検索

●説明
最後に現れるコロンの右側だけ抽出したいです

●対象データ
ab:e-gkm: ::12

●希望する結果
12
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s