Regular Expression(正規表現) Part17

1デフォルトの名無しさん
垢版 |
2023/12/16(土) 08:59:20.50ID:uVHZ7e2j
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part16
https://mevius.5ch.net/test/read.cgi/tech/1635936601/

次スレは>>980宜しく
テンプレ>>2以降
2024/07/09(火) 03:18:21.56ID:pEcdZJzG
re2のレポジトリに、ずっとコード書いてきた人を追悼するissueが立ってるけど
いたずらじゃなく本当だとしたら今後どうするんだろ
正規表現エンジンの設計ってわりと専門性高めで後任を見つけるのも簡単ではなさそうだけど
2024/07/10(水) 22:30:27.80ID:gmanX3ar
You! Google 入っちゃいなよ!
2024/07/14(日) 06:46:47.39ID:wEMWtxb4
これ以上仕様ごちゃごちゃ追加しても
使いこなせる人1%もいないから放置でいいよ
2024/07/15(月) 14:02:14.21ID:glISuHIA
お前がこなすんだよ!
2024/07/16(火) 09:13:43.60ID:dYW+o1n8
お前がこなたなんだよ!
2024/07/17(水) 20:43:28.55ID:F5hkyutw
Googleのre2とIntelのhyperscanは他の色んな正規表現エンジンを過去のものにした
2024/07/20(土) 05:52:51.61ID:/niJ3Ici
高速な正規表現エンジンを求める人が遅い正規表現を作って使ってたりする
正規表現エンジン作者はユーザーのアップデートもしたいだろうな
2024/07/22(月) 03:43:13.27ID:qSKgOXFg
そういうのはエディタの仕事だ
ビジュアライザー付き正規表現ダイアログボックスで
ミスなく正規表現を入力したらAIが改善を指摘すればよし
2024/07/22(月) 15:45:56.06ID:L5BeUc31
正規表現を作るのが下手な人は書き始める前のアルゴリズム作成の段階で
おかしくなってる場合も多い それ含め全部AIがやってくれるのが理想だ
2024/07/22(月) 15:48:23.43ID:65P6Lbbe
場合抜けしてる勘違いぎみの式だけを見たって
本来の意図が何だったのかAIじゃなくて人間でもわからん場合もあるよね
2024/07/22(月) 17:18:51.25ID:JYnS/4wE
正規表現だけみせても最適化しかできないだろうから
周辺のコードも与えて関数レベルで出力してもらうのが適当かもね
2024/07/23(火) 19:28:10.50ID:Dt1Z//LV
AIに抽出してもらえば正規表現いらないじゃん
2024/07/29(月) 23:15:46.44ID:rj9tTr/V
●Regular Expressionの使用環境
JaneXeno

●検索か置換か?
検索

●説明
.com .net .jp 以外のドメインを含むURLをNGにしたい

●対象データ
http://example.com
http://example.net
http://example.jp
http://example.cn
http://example.xyz
https://example.com
https://example.net
https://example.jp
https://example.cn
https://example.xyz

●希望する結果
http://example.cn
http://example.xyz
https://example.cn
https://example.xyz
2024/07/30(火) 15:30:31.34ID:QttCMg3R
>>114
https?+://(?:[!-~&&[^./"()<>]]++\.)++(?!com|net|jp)(?>[a-z]{2,10})(?::(?>[0-9]{2,5}))?+(?>[/?#]|(?![!-~&&[^"()<>]]))
116114
垢版 |
2024/07/30(火) 16:01:05.48ID:DGOcYJSo
>>115
神様、マジありがとうございました
2024/08/04(日) 11:21:08.46ID:H8uHYzPU
(?>[/?#]|(?![!-~&&[^"()<>]]))

これは先読み否定1つにまとめられる

(?!com|net|jp)

これはcomeやjpgも弾いてしまう

どちらも実用上は問題ない
前者は頭の体操にはちょうどいい難易度
118114
垢版 |
2024/08/04(日) 11:54:05.49ID:katRHk63
>>117
ちょっと何言ってるか分からない
119デフォルトの名無しさん
垢版 |
2024/08/04(日) 12:37:10.85ID:5uZlH5sT
アーガスで一番右に行ってから着陸しろって意味じゃね?
2024/08/20(火) 21:50:27.06ID:KT2/xy/p
●Regular Expressionの使用環境
JaneXeno

●検索か置換か?
検索

●説明
ageとsageと空欄以外の文字列が含まれる場合を検出したいです

よろしくおねがいします
2024/08/21(水) 06:42:43.17ID:7ZTrDQRo
メール欄を検索対象にしたレス抽出ってこと?
\A(?!s?age$)
2024/08/21(水) 08:39:25.39ID:mGvismew
>>121
ありがとうございます
メール欄がageとsageと空欄を除き、それ以外をNGにしたいです
123120
垢版 |
2024/08/22(木) 07:25:48.82ID:mXgFFjHI
>>121
その正規表現だと全てNGになってしまいました・・・
2024/08/22(木) 07:36:11.31ID:Lj1UZYEn
>>123
ぜんぜんユーザじゃないけどbregonig.dll導入で解決しそう
2024/08/22(木) 09:04:27.38ID:NijHRpmx
^(?!age$|sage$|$).+
2024/08/22(木) 09:05:35.42ID:knLF+ZG1
>>123
(^s?age$|^$)は?
サンプルがないからよくわからんけど構造によっては空欄がムズイ気がする
2024/08/22(木) 09:53:46.14ID:od4YjwYP
明らかにソフトのスレで聞いた方が早いだろう
JaneXeno質問スレ9
http://egg.5ch.net/test/read.cgi/software/1722559511/
2024/08/22(木) 10:35:07.43ID:B9IGKhdB
^(?!sage|*age|\s|\S).*$  前方一致否定
^(?!.*sage|*age|\s|\S).*$  部分一致否定
^(?!.*sage$|*age|\s|\S) 後方一致否定


動くかはしらん
2024/08/22(木) 10:45:02.10ID:1r7uDbgD
^(?!age).*$
^(?!sage).*$
^(?!\s).*$

を3行前方一致の否定で分けてかいてみたら?全角空白はわからん
2024/08/22(木) 11:53:01.69ID:Z0c4Ov9t
NG Addr 正規(含まない)
^(age|sage|)$
2024/08/22(木) 12:27:50.31ID:1pp2sZBh
>>124 をせんとエンジンがよわよわなだけで
正規表現は >>121 であってるし低脳ばっかやな
2024/08/22(木) 16:58:52.48ID:WSGH1Pr6
datで下の3つ以外でmatchするってことだろ(書き込みエラーで<>に置き換えてる)
名前(変動)<>sage<>2024/08/22(ry
名前(変動)<>age<>2024/08/22(ry
名前(変動)<><>2024/08/22(ry
専ブラによってエンジンが違うから環境いれる気にはならんが
2024/08/27(火) 22:04:04.81ID:K31idf52
age sage の前後に半角空白が1つまたは2つ入ることを想定すべき
Janeの全盛期ならこんなのすぐに解決してたな
2024/08/28(水) 09:58:05.19ID:M0ceOk+r
想定すべき、って言えるのなんなんだろう?
そこまで想定してなくても実用上十分、てことは多々あるだろう
2024/08/28(水) 11:44:10.78ID:29oRaxIo
スレのdatは板ごとに微妙な違いがある
半角空白が前後に入るスレは珍しくなかった
今の人が知らないのは仕方ない
2024/08/28(水) 12:04:38.47ID:TruuGgPL
>>135
それこそ想定しないても通常大丈夫なものじゃん
俺のLog漁っても20年以上前からあるけど、まだ日付けの年号が2桁でIDも付いてないものでも
前後に空白は付いてなかったくらいだ
俺はレス本体と一時期のスレタイトルぐらいしか記憶にないよ
2024/08/28(水) 12:06:40.94ID:TruuGgPL
スレタイトルは空白じゃなくてタブだったので訂正しとく
2024/08/28(水) 15:51:55.48ID:29oRaxIo
半角空白が入る板が存在しないなら対応する必要は無いよ

ただ、自分なら対応したものを作る
そういう板が1つでもあったら作り直しになるから

質問者さんが使っている板が半角空白が入る板ではないという確証が無い以上
対応しておくのが無難でしょう、したらばやJane板のような外部板のことまで考えるとね
2024/08/28(水) 15:59:03.58ID:TruuGgPL
実用上十分ってことを知らんのか
さらに、他BBSでも空白が入るところは大手ではないよ
(したらば、おーぷん、JANE総合も入らない)
2024/08/28(水) 19:41:57.47ID:29oRaxIo
大手じゃないところで半角空白が入る板があったら誤作動する正規表現を作るよりも
対応したものを作るほうがベターだと思うが

頑なに非対応にする理由もあるまい
2024/08/29(木) 00:19:30.02ID:3od28NMQ
メール欄がわざと「 age 」の奴をNGできない
2024/08/29(木) 19:22:18.21ID:s7DstX6Q
>>133 は対応するべき、て言い切ってる
自分ならこうするとか、この方がベターとかとは一線を画す表現
やらなきゃいけないと言っている

でもさ、不特定多数に配るアプリの話じゃないんだよ?
2024/08/29(木) 19:26:50.79ID:s7DstX6Q
RFC準拠のメールアドレスの正規表現はクソ長いが個人で使うのにそこまで要らん
の話思い出した
2024/08/29(木) 19:38:28.39ID:zKbcOD8k
自分が使うものなら好きにすれば良いが質問の回答として正規表現を作るなら
柔軟性を確保するにこしたことはない
でないと質問者は自分じゃ直せないからちょっとした誤作動でまた質問しに来てしまう
そういう意味で「すべき」と書いたよ、何か問題ある?

> メール欄がわざと「 age 」の奴をNGできない

わざとでない「 sage」がNGになってしまうのはいいの?
2024/08/29(木) 21:34:59.96ID:s4c4C/Bz
試しに、名前とメール欄に前後半角空白付きで書き込んでみた
結果、datからは前後の半角空白は削除されて付いてない

そもそも、可能性があるってだけで対応しないといけないってのはおかしいだろ
たった一つだけでいいのでそういう例がある(あった)というものを出すべき
2024/08/29(木) 21:37:57.27ID:s4c4C/Bz
書いたところは
https://egg.5ch.net/test/read.cgi/software/1724332370/204-206
それぞれJaneStyleで末尾整形あり、整形なし、汎用ブラウザ(firefox)で書いた
2024/08/29(木) 23:45:06.51ID:zKbcOD8k
それは掲示板だって半角空白に対応させてるってことでしょ
正規表現で半角空白に対応しておくべきと書くことはそんなにおかしなことなの

質問者はまだ未解決のようだけどその原因が半角空白でないと言い切れる?
最初から対応しておけばこの可能性を考えずに済むよね?
なんで想定すべきと書いたらいけないの?

ここにいる人全員が納得出来る説明を求む
2024/08/29(木) 23:55:45.32ID:s4c4C/Bz
回答は的確に簡潔に質問に答えることがいちばん
余計な蛇足を加えて悦にいるのは自分が使う分にはいいけど人に指図するものじゃない
ソースコードやスクリプトでも質問もしてないのにあれこれ余分な配慮でコードを複雑にして
いいことをやったと自己満足してる奴にはならないようにしよう
2024/08/29(木) 23:59:39.42ID:s4c4C/Bz
で、半角空白が含まれるものはあるんかい
この部分は一つだけ実例を示すだけでいいんだよ
存在しえない可能性とやらを配慮するのはまったくの無駄
それは半角空白の変わりにタブコードが含まれる場合に対処しろって言うのと変わらん
2024/08/30(金) 00:10:46.53ID:z5xrh4P7
>>135で板によっては存在するのは珍しくないとまでいってるんだから
そのリンクを示すだけでいいんだぞ
2024/08/30(金) 01:14:28.93ID:8cMr2Sm2
141がありもしない難癖ではないことを示すために
メール欄がわざと「 age 」「 sage」の例
https://egg.5ch.net/test/read.cgi/software/1724332370/209-210

空白が入る板とメール欄がわざとでない「 sage」は見たことないな
2024/08/30(金) 08:58:26.65ID:qASTkovi
そんなにいつまでも続けるネタじゃないだろ
2024/08/30(金) 13:24:57.13ID:dkGEn5CF
どんぐりの醜い争い
2024/08/30(金) 17:56:05.65ID:kCrr7PoM
^(s?age|)$でどっちもNGできるわ
>>130でもう出てる
2024/08/31(土) 12:23:47.01ID:ESY986wz
見たことない == 存在しない

さすがに草
2024/08/31(土) 16:07:56.33ID:xB9BteZK
こういう専門スレでよくある現象
質問者がいなくなったのに殴り合い始める
2024/08/31(土) 19:41:26.67ID:ESY986wz
人のちょっとした不手際に噛みつき大騒ぎ
都合が悪いことを言われたらもっともらしいことを言ってごまかす

どこかの知事のマネかねぇ
2024/09/01(日) 12:11:46.90ID:ruX2CvUf
>>147に対する>>148の回答が面白い

>回答は的確に簡潔に質問に答えることがいちばん

と最初に書いておきながら聞かれたこととはまったく違う回答をしてる
2024/09/01(日) 12:54:37.81ID:mvzZbYC4
まだやってるのか
よほど悔しかったと見える
2024/09/02(月) 05:55:02.84ID:zV+ToF23
>>123から半角空白を疑うのは自然な反応だと思うが
20年前のログがあるおっさんがキレる理由が分からんね

論破されて話題のすり替えをして逃げる卑屈な人間でいるより素直に謝ったほうがマシじゃね
てか論破されてることに気付いてなさそう
2024/09/02(月) 15:51:56.49ID:AlH3f6um
いつ変わってもおかしくないような仕様をなぜそんなに信頼できるのか
…ということを抜きにしても、「実用上十分」かどうかを勝手に決めつけるのは…
というか、>>127 で終わりじゃだめだったのか?
2024/09/02(月) 21:11:06.60ID:uqoOZz2h
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
163
垢版 |
2024/09/02(月) 21:44:55.24ID:Y7//7QQC
偽・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
164デフォルトの名無しさん
垢版 |
2024/09/03(火) 00:47:33.48ID:dSkXog9i
内輪もめは巣に帰ってやれや屑共
2024/09/03(火) 11:11:23.38ID:JwjQ1m/O
次から「>>127に帰れ」でok
向こうにも正規表現作れる人いるみたいだし

知事そっくりのおっさんはしばらく謹慎しとけ
2024/09/03(火) 11:14:09.37ID:d9bMT2aR
内容的に割と単純かつどうでもいいネタに限って長引く傾向にあるな
2024/09/03(火) 13:28:50.53ID:FknR0mX7
>>126で終わってるんだよ
補足説明込みでも>>130までで以降は無価値
2024/09/04(水) 07:40:52.55ID:EbiVCIQx
>>121>>131が空気になっててかわいそうなんだが
誰か構ってやれよ
169デフォルトの名無しさん
垢版 |
2024/09/10(火) 05:40:09.20ID:+qdzMQ7n
質問なのだが、htmlファイルで
<DOCTYPE からつづいて途中にあるAAAをごっそり空欄で置換したいのだが
どうやったらええん
^<DOCTYPE*AAAじゃうまくいかんかったのよねー
2024/09/10(火) 06:04:34.38ID:kowefQA5
<DOCTYPEEEEEEEEEAAA「ぐわぁ!!
2024/09/10(火) 14:57:41.04ID:W69Tu2B8
DOCTYPE*は、DOCTYPの後にEが0回以上繰りかえしているものを表すけど本当にそうなってるとは思えん
DOCTYPEEEEEEAAA
2024/09/11(水) 03:14:10.70ID:qNF+YH3h
昔の仕様をごそっと<!doctype html>に統一したいなら
^<!doctype.*>で置き換えすりゃいいんじゃね、見当違いならごめん
2024/09/11(水) 07:51:29.11ID:9V6SWpAY
.*>

人に教えていいレベルじゃねぇ
2024/09/11(水) 08:07:51.41ID:qNF+YH3h
すぐに気づくだろ初心者スレってわけじゃなし
2024/09/11(水) 08:42:50.99ID:HzXBBqr9
すみません、全部消えました
2024/09/11(水) 08:45:08.47ID:9UoQOhuf
>>174
無能
2024/09/11(水) 08:51:56.08ID:4F/AxKNI
またはじまった
こいつほんとにクソやな
2024/09/11(水) 09:13:11.67ID:qNF+YH3h
そもそもスクリプトなのかエディタなのか
具体的な例も使用方法も書かずに答えが出るわけねえよ
2024/09/11(水) 13:19:20.05ID:9V6SWpAY
回答は的確に簡潔に質問に答えることがいちばん

>>169
^<DOCTYPE.*?AAA
2024/09/11(水) 14:41:32.83ID:e/oUHwOW
通常先頭に書くDOCTYPEは
<!DOCTYPE html ~>ってなると思うんだが、!は何処に行った?
さらにAAAとか出てくるか?
AAAがdoctypeと無関係ならその間に改行も挟まってるかもしれんよ
2024/09/11(水) 15:58:20.52ID:9V6SWpAY
<DOCTYPE
.*?

人に教えていいレベルじゃねぇ
2024/09/11(水) 16:32:04.44ID:NXAVPXLE
>>181
なんじゃそりゃww
2024/09/11(水) 18:51:15.50ID:DnMjWL2Z
シングルラインモードでフォルダ内jsonを正規表現でgrep検索できるフリーのテキストエディタ教えて
windowsで動いてGUIしっかりしてる使いやすいのがいい
2024/09/12(木) 00:04:43.72ID:uYEhMGBt
外部コマンド取り込めてパスからジャンプできるエディタならなんでもいいんでは
vim/neovimとかvscodeとか
2024/09/12(木) 09:42:50.94ID:71tHR6b6
シングルラインモードと言うと複数行に渡ってマッチさせたいと?
拙者がつこうてるエディタは一行単位でしかマッチ出来なかったでござる
186デフォルトの名無しさん
垢版 |
2024/09/12(木) 10:05:19.60ID:fOf5lfVo
ワイルドカードと性器表現
どうしてこうなったマン心環境の違い
2024/09/12(木) 11:27:45.34ID:G9h42jpn
>>183
grepとエディタは別々でいいだろ
GUIのgrepソフトは外部エディタを呼べるようになってる(呼べないものって多分無い)
テキストエディタはそれこそ何でも良い
俺はDevasってgrepソフト使ってるがこれも過去に適当に探したものなのでもっといいものがあるかもしれない
2024/09/12(木) 11:34:30.88ID:G9h42jpn
いや、json限定ならjsonエディタとか使えばいいんじゃなかろうか
2024/09/12(木) 14:21:47.53ID:iwy8LWRU
>>183
非ascii文字はユニコードエスケープされてる?
2024/09/12(木) 14:33:20.53ID:G9h42jpn
JSONだから基本UTF-8なんじゃないのか?
2024/09/12(木) 14:35:15.82ID:G9h42jpn
パーセントエスケープか
あるのとないのと両方あるしなあ
2024/09/12(木) 14:54:08.26ID:71tHR6b6
北製のエディタ選んでぶっこ抜かれてるやつはいないな?
出所の怪しいやつは避けるんだぞ?
2024/09/12(木) 16:03:08.30ID:3oNIjHZT
>>184
>>187
ありがとう使ってみる
対象ファイルはUTF8で改行はLFとCF+LF混合(1ファイル内では統一)
日本語2バイト文字はエスケープなしに普通に表記されてる
2024/09/12(木) 16:55:26.60ID:tplSlOtQ
>>187,193
dnGrepも良い

マッチ箇所の前後数行表示やマッチファイル全体プレビュー表示でサクッと探して
diffとtext editor用の外部コマンドラインを複数登録して使ってる
(有名どころのテンプレートあり)
2024/09/12(木) 17:00:09.50ID:G9h42jpn
>>193
テキストエディタは何でも良いとは言ったけど
起動引数にファイル名と行位置を指定できるものじゃないと使い物にならない
メモ帳はダメだが大抵大丈夫
2024/09/12(木) 17:38:37.00ID:G9h42jpn
>>194
良さそうだなと思ったらwin7には無理っぽい(.NET8だとか)
2024/09/13(金) 06:32:33.01ID:11vS+uA+
>>196
文字エンコーディング自動判別が出来るので、ちょっと古めのcp932とUTF8の混在環境で重宝すると思ったがそれは残念

>>183,193は大丈夫そうだけど(根拠なし)
2024/09/23(月) 23:23:59.22ID:kDMCxsRj
pcre2の作者さんが後継者探してる
27年続けてきて最近年を感じるようになったとか
2024/09/26(木) 08:21:09.95ID:JQMFr7dw
老朽ソフトウェアの後継者問題って
需要があれば勝手にメンテされるし無ければ消えるだけだよ
正規表現は時代に合ってないからこの概念ごと消えるかもしれない
2024/09/26(木) 20:55:23.73ID:DovoaZNg
>>199
正規表現が時代に合ってないってどういうこと?
2024/09/26(木) 22:02:49.37ID:KgNEnM1+
たぶんだけど自然言語で書く、かな
いまでもコンパイルはしてるし
曖昧な表現だとランタイムエラーになるのはおなじ
2024/09/26(木) 22:22:27.94ID:ingxpjLa
AIと喋ってろ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況