Regular Expression(正規表現) Part17
235デフォルトの名無しさん
2024/11/20(水) 17:07:45.94ID:vf/ffllo regexpは数学(キリっ
236デフォルトの名無しさん
2024/11/20(水) 17:38:18.40ID:ibyj9elY ウザっ
237デフォルトの名無しさん
2024/12/12(木) 23:55:43.32ID:9bmybcd/ 暫く使わないとすぐ忘れてしまう
低スキルだから使う頻度が少なくて記憶が定着しない
低スキルだから使う頻度が少なくて記憶が定着しない
238デフォルトの名無しさん
2024/12/13(金) 00:12:32.38ID:EgfV0Bor わかる
特に(?!これ系一切覚えてない)
特に(?!これ系一切覚えてない)
239デフォルトの名無しさん
2024/12/13(金) 13:01:50.92ID:hybzdr+3 =^^= こんな演算子をどこかの記事で見た記憶はあるけど意味は忘れた
240デフォルトの名無しさん
2024/12/13(金) 13:19:30.73ID:Zywldz4i ∧,,∧
(=^v^) にょほほー
/ l
(OuuO
(=^v^) にょほほー
/ l
(OuuO
241デフォルトの名無しさん
2024/12/19(木) 16:02:37.82ID:1szj+7uv ●Regular Expressionの使用環境
テキストエディタのMeryや、テキストエディタのgPadの置換
●検索か置換か?
検索
●説明
英文中のスペース以外の、他のスペースを削除したいです。
●対象データ
平和 戦争
AA XVA ZZ
昭和 平成 令和
NIHON BUNKA
経済 学部
Ishiba Naikaku
●希望する結果
平和戦争
AA XVA ZZ
昭和平成令和
NIHON BUNKA
経済学部
Ishiba Naikaku
※いま現在はネットを探してやっと見つけた
(?<![a-zA-Z])\s|\s(?![a-zA-Z])
を使ってます。これは連続スペースやTabにも対応してるのが良い点と思います。
ただ、全角スペースは削除出来ませんし、改行まで削除されて1行テキスト文に
なるという短所があり、また手動で改行しなくてはならず非常に手間です。
全角スペースはまだ良いとして改行削除がされないように改善できませんでしょうか?
よろしくお願いします。
テキストエディタのMeryや、テキストエディタのgPadの置換
●検索か置換か?
検索
●説明
英文中のスペース以外の、他のスペースを削除したいです。
●対象データ
平和 戦争
AA XVA ZZ
昭和 平成 令和
NIHON BUNKA
経済 学部
Ishiba Naikaku
●希望する結果
平和戦争
AA XVA ZZ
昭和平成令和
NIHON BUNKA
経済学部
Ishiba Naikaku
※いま現在はネットを探してやっと見つけた
(?<![a-zA-Z])\s|\s(?![a-zA-Z])
を使ってます。これは連続スペースやTabにも対応してるのが良い点と思います。
ただ、全角スペースは削除出来ませんし、改行まで削除されて1行テキスト文に
なるという短所があり、また手動で改行しなくてはならず非常に手間です。
全角スペースはまだ良いとして改行削除がされないように改善できませんでしょうか?
よろしくお願いします。
242デフォルトの名無しさん
2024/12/19(木) 16:06:40.57ID:wZwgXxbf なかなかの丸投げだな
¥sを[ \t ]
¥sを[ \t ]
243デフォルトの名無しさん
2024/12/19(木) 17:08:28.91ID:1szj+7uv244デフォルトの名無しさん
2024/12/20(金) 20:07:37.02ID:7538eGNC すげー半年がかりの疑問を瞬殺か
やっぱ詳しい人に聞いておくものだな
やっぱ詳しい人に聞いておくものだな
245デフォルトの名無しさん
2024/12/21(土) 01:36:35.41ID:lQ0nYrFo 半年同じ問題に取り組める根気は素晴らしいが初心者は効率が悪いね
Googleとかは20分だか30分だか手が止まったら質問しろって企業文化らしい
Googleとかは20分だか30分だか手が止まったら質問しろって企業文化らしい
246デフォルトの名無しさん
2024/12/22(日) 15:36:39.77ID:8OMG/th9 メモ
Meryで\sを全角スペースにマッチさせるには(?u)\sかFindOnig=1
Meryで\sを全角スペースにマッチさせるには(?u)\sかFindOnig=1
247デフォルトの名無しさん
2024/12/23(月) 12:51:43.05ID:hOdCdrxj 半年あったら正規表現覚えたほうが早いな、Meryクリスマス
248デフォルトの名無しさん
2024/12/23(月) 12:59:50.83ID:hOdCdrxj I have a pen. I have an apple.
249デフォルトの名無しさん
2024/12/31(火) 20:44:10.06ID:Thw2Z7nN (?<=This year)(?=Next year)
250デフォルトの名無しさん
2025/01/04(土) 18:21:54.49ID:YsNNcli5 <title> を
\<title\> って書かないとエラーになるケースってあるの?
\<title\> って書かないとエラーになるケースってあるの?
251デフォルトの名無しさん
2025/01/04(土) 19:03:21.90ID:0KLOcGyc GnuRegexとGrepでは\<と\>は特別な意味を持つ、それぞれ単語の先頭、単語の末尾にマッチする
だから<title>にマッチさせたいのではなくtitleにマッチさせたいのかも
\<と\>で囲えばbigtitleやtitleholderにはマッチしなくなる
だから<title>にマッチさせたいのではなくtitleにマッチさせたいのかも
\<と\>で囲えばbigtitleやtitleholderにはマッチしなくなる
252デフォルトの名無しさん
2025/01/04(土) 20:47:05.52ID:a+K50MRq Gnuって書いたらヌーになるがな
253デフォルトの名無しさん
2025/01/04(土) 21:43:10.75ID:12P97q6K メタ文字 \b が使えない環境ってことなんだろうか?
254デフォルトの名無しさん
2025/01/04(土) 21:56:58.81ID:0KLOcGyc255デフォルトの名無しさん
2025/01/04(土) 22:07:44.40ID:0KLOcGyc256デフォルトの名無しさん
2025/04/05(土) 13:05:55.46ID:/X2GFnPw GeminiにChatでやりたいこと入力したらずばりの正規表現回答してくれんのすごすぎて草
そんで最強のGrep検索・置換ツールのVScodeにその正規表現をコピペするだけの簡単なお仕事
マジで更新もされず陳腐化したクソ使い難い正規表現アプリやサービスがすべて駆逐されんの納得でクソワロタ
そんで最強のGrep検索・置換ツールのVScodeにその正規表現をコピペするだけの簡単なお仕事
マジで更新もされず陳腐化したクソ使い難い正規表現アプリやサービスがすべて駆逐されんの納得でクソワロタ
257デフォルトの名無しさん
2025/04/05(土) 14:35:59.22ID:dD+UMa0w VSCodeやのにCopilotつかわんのなんでなんw
置換はperl -i -peが手軽にコードも介在できて未だに最強
置換はperl -i -peが手軽にコードも介在できて未だに最強
258デフォルトの名無しさん
2025/04/05(土) 17:01:54.69ID:yzm+sG/V 文章でミジンコだとわかるだろほっといてやれ
259デフォルトの名無しさん
2025/04/07(月) 00:01:48.06ID:HqNk85Dr 一方、ロシアは秀丸エディタを使った
260デフォルトの名無しさん
2025/04/07(月) 18:30:32.29ID:+glSnyRi 米国がEmEditorを使うところから物語は始まるのか
261デフォルトの名無しさん
2025/05/07(水) 13:34:42.62ID:VK/GbxYn 後方参照を初めて使ってみた
なるほど便利
後方を参照するのかと思っていたが後方で参照すると言う意味だった
なるほど便利
後方を参照するのかと思っていたが後方で参照すると言う意味だった
262デフォルトの名無しさん
2025/05/08(木) 20:10:04.49ID:a95yfZhU ぎょぎょぎょ?参照うお
263デフォルトの名無しさん
2025/05/08(木) 20:37:02.88ID:NyjQsc8w ぎょえーー
264デフォルトの名無しさん
2025/06/10(火) 10:10:19.59ID:JUI3rKzN 置換……指定した文字を置換します。
@AA@A@.TXTの"@"を"Q"に置換(場所の指定無し)
QAAQAQ.TXT - すべて置換される
@AA@A@.TXTの"@"を"Q"に置換(場所を指定)
前から1文字目 : QAA@A@.TXT - 前から1文字目のみ置換
前から4文字目 : @AAQA@.TXT - 前から4文字目のみ置換
後から1文字目 : @AA@AQ.TXT - 後から1文字目のみ置換
削除……指定した場所にある文字を削除します。
ABBAA.TXT、ACCAA.TXTの前から2文字目から右に2文字を削除
ABBAAB.TXT → AAAB.TXT
ACCAAC.TXT → AAAC.TXT
@AA@A@.TXTの"@"を"Q"に置換(場所の指定無し)
QAAQAQ.TXT - すべて置換される
@AA@A@.TXTの"@"を"Q"に置換(場所を指定)
前から1文字目 : QAA@A@.TXT - 前から1文字目のみ置換
前から4文字目 : @AAQA@.TXT - 前から4文字目のみ置換
後から1文字目 : @AA@AQ.TXT - 後から1文字目のみ置換
削除……指定した場所にある文字を削除します。
ABBAA.TXT、ACCAA.TXTの前から2文字目から右に2文字を削除
ABBAAB.TXT → AAAB.TXT
ACCAAC.TXT → AAAC.TXT
265デフォルトの名無しさん
2025/07/13(日) 21:04:57.49ID:Dpndt2SK iOSです
このスレで訊いて良いのかわかりませんが
Instagramの画像はその投稿のURL、例えばこれ↓
https://www.instagram.com/p/DL6O8f3zfb-/
の末尾に「media/?size=l&.jpg」を加えると投稿の一枚目の画像URLになります
↓
https://www.instagram.com/p/DL6O8f3zfb-/media/?size=l&.jpg
しかし、2枚目以降の画像URLがわかりません
「media/?size=l&.jpg」をいじって2枚目以降の画像URLが作れませんでしょうか
ご教授お願いします
このスレで訊いて良いのかわかりませんが
Instagramの画像はその投稿のURL、例えばこれ↓
https://www.instagram.com/p/DL6O8f3zfb-/
の末尾に「media/?size=l&.jpg」を加えると投稿の一枚目の画像URLになります
↓
https://www.instagram.com/p/DL6O8f3zfb-/media/?size=l&.jpg
しかし、2枚目以降の画像URLがわかりません
「media/?size=l&.jpg」をいじって2枚目以降の画像URLが作れませんでしょうか
ご教授お願いします
266デフォルトの名無しさん
2025/07/13(日) 21:12:41.07ID:SOWPf8Mn 正規表現関係ねーw
267デフォルトの名無しさん
2025/07/13(日) 21:19:50.98ID:Dpndt2SK どこで訊いたら良いのかわからず、パソコン詳しい人が多そうなここで質問させて頂きました
268デフォルトの名無しさん
2025/07/14(月) 01:14:36.64ID:KR/EmCR1 和んだ
269デフォルトの名無しさん
2025/07/14(月) 02:28:52.50ID:yh4CMksV PC詳しい人が多そうなスレでそういう質問を受け付けていると
馬鹿が多そうなスレに成り下がると気が付かないものかね
馬鹿が多そうなスレに成り下がると気が付かないものかね
270デフォルトの名無しさん
2025/07/25(金) 05:51:04.25ID:3r8TzWYu >>264
sed の出番か?
sed の出番か?
271デフォルトの名無しさん
2025/08/09(土) 13:09:26.08ID:AY2Xi2Yg SNSやWeb検索もたいてい正規表現対応してるからプログラミング以外で活用できる場面が増えてなんか嬉しい
272デフォルトの名無しさん
2025/08/14(木) 17:46:16.07ID:ll+c+ksk そんなに対応してるのある?
273デフォルトの名無しさん
2025/09/29(月) 18:28:57.47ID:omFFHDum ^[^:]+://+([^:/]+\.)?
これの//+部分って//だけで問題ありますか?
これの//+部分って//だけで問題ありますか?
274デフォルトの名無しさん
2025/09/29(月) 19:15:27.09ID:QGaGSVZY >>273
その正規表現の目的は理解できてるの?
その正規表現の目的は理解できてるの?
275デフォルトの名無しさん
2025/09/29(月) 21:45:19.64ID:SNsW5d6C276デフォルトの名無しさん
2025/09/29(月) 22:25:44.67ID:RjmgsX7I277デフォルトの名無しさん
2025/09/29(月) 22:54:22.13ID:FkLCZ8/e 何にマッチさせたいかによるわな
278デフォルトの名無しさん
2025/10/25(土) 12:46:17.09ID:BjPJz/dc 【悲報】4/24に鬼車がgithubで開発終了したのに続いて
鬼雲(bregonig.dll)の公式サイトが9/30で閉鎖
http://k-takata.o.oo7.jp/
https://x.com/k_takata/status/1970461557374230654
鬼雲(bregonig.dll)の公式サイトが9/30で閉鎖
http://k-takata.o.oo7.jp/
https://x.com/k_takata/status/1970461557374230654
279デフォルトの名無しさん
2025/10/28(火) 01:47:57.16ID:WdB2Psfo 鬼車はJavaScriptの仕様に寄せろと細かいことまで言われて
嫌気がさしたのかなという印象だけど真相は作者のみぞ知るか
ただ最近はDFAキャッシュを使うエンジンの台頭で
これとかboost.regexが速いとされた時代はとうに終わってるんで
マルチバイト対応を必要とする人以外はあまり影響ない気もする
嫌気がさしたのかなという印象だけど真相は作者のみぞ知るか
ただ最近はDFAキャッシュを使うエンジンの台頭で
これとかboost.regexが速いとされた時代はとうに終わってるんで
マルチバイト対応を必要とする人以外はあまり影響ない気もする
280デフォルトの名無しさん
2025/11/02(日) 19:07:30.81ID:vGsY1NrW 「正規表現技術入門」を読むと、GNU grep ではマッチング途中で必要になった部分だけ
オンデマンドで DFA を構成していく On-the-Fly 構成法を使っている、と書かれてるけど
どのレベルから On-the-Fly してるんでしょ ?
部分集合構成法で NFA を DFA に変換する所からなのか、もっと前のε-遷移除去からなのか
あるいはさらに前の正規表現をパースして NFA を作る所も On-the-Fly なんですかね ?
GNU grep のソース見ろと言われそうだけど
オンデマンドで DFA を構成していく On-the-Fly 構成法を使っている、と書かれてるけど
どのレベルから On-the-Fly してるんでしょ ?
部分集合構成法で NFA を DFA に変換する所からなのか、もっと前のε-遷移除去からなのか
あるいはさらに前の正規表現をパースして NFA を作る所も On-the-Fly なんですかね ?
GNU grep のソース見ろと言われそうだけど
281デフォルトの名無しさん
2025/11/02(日) 20:01:30.27ID:JoUIYtII 正規表現の枠を超える後方参照(\1)とかで使ってそう
あれが絡むと事前にDFA作れない
あれが絡むと事前にDFA作れない
282デフォルトの名無しさん
2025/11/02(日) 20:13:48.87ID:JoUIYtII 正則言語の枠か
用語がちょっと怪しい
用語がちょっと怪しい
283デフォルトの名無しさん
2025/11/03(月) 19:15:39.49ID:6hs01YZr >>280
自己レス。AI に聞いたら
| GNU grepでは、DFA の生成に On-the-Fly(実行時逐次的)な手法を採用していますが、
| それは基本的に部分集合構成法を逐次的に行うことを意味します。
| ε遷移の除去も、このプロセスの中で実質的に On-the-Fly で行われます。
とのことでした。やっぱε-除去も On-the-Fly なのか、ムズいなー
>>281
GNU grep の On-the-Fly 法は、到達しない状態ノードを作らないようにすることで
省メモリ化と高速化が目的なので、DFA の構造自体が動的に変わるものではないと思ってました。
で、言われるように後方参照は正規言語のクラスを超えてるので、DFA 型エンジンでは
普通は実現出来ないのだけど、「正規表現技術入門」では
| GNU grep は基本的に DFA 型ですが、部分的(後方参照への対応のためなど)に一部
| VM 型のアプローチもとっています。
とかさらっと書いてあるだけで、具体的な記述はないんすよね (やっぱ入門書だな)。
でも言われてみれば、On-the-Fly 的に動的に DFA を構成して行けば、それで後方参照も
実現出来そうな気がしてきた。バックトラックとか面倒そうだけど一考の価値はあるかも
GNU grep もそうやって実装してる ? かどうかは分からないけど
自己レス。AI に聞いたら
| GNU grepでは、DFA の生成に On-the-Fly(実行時逐次的)な手法を採用していますが、
| それは基本的に部分集合構成法を逐次的に行うことを意味します。
| ε遷移の除去も、このプロセスの中で実質的に On-the-Fly で行われます。
とのことでした。やっぱε-除去も On-the-Fly なのか、ムズいなー
>>281
GNU grep の On-the-Fly 法は、到達しない状態ノードを作らないようにすることで
省メモリ化と高速化が目的なので、DFA の構造自体が動的に変わるものではないと思ってました。
で、言われるように後方参照は正規言語のクラスを超えてるので、DFA 型エンジンでは
普通は実現出来ないのだけど、「正規表現技術入門」では
| GNU grep は基本的に DFA 型ですが、部分的(後方参照への対応のためなど)に一部
| VM 型のアプローチもとっています。
とかさらっと書いてあるだけで、具体的な記述はないんすよね (やっぱ入門書だな)。
でも言われてみれば、On-the-Fly 的に動的に DFA を構成して行けば、それで後方参照も
実現出来そうな気がしてきた。バックトラックとか面倒そうだけど一考の価値はあるかも
GNU grep もそうやって実装してる ? かどうかは分からないけど
284デフォルトの名無しさん
2025/11/05(水) 01:01:25.63ID:hq1L/1I1 それわかったらなんか良いことあるの(クルクルパー
285デフォルトの名無しさん
2025/11/07(金) 00:31:17.29ID:Ua2fzQVD NFA使わずに正規表現から直接DFAを構成する方法がDragon Bookに書いてあるけど
この書籍は今もDragon Bookで通じるのかな
もう古文書扱いされてそう
この書籍は今もDragon Bookで通じるのかな
もう古文書扱いされてそう
286デフォルトの名無しさん
2025/11/07(金) 17:38:51.77ID:2v77MqUc287デフォルトの名無しさん
2025/11/07(金) 18:36:08.56ID:Ua2fzQVD Dragon Bookでpdf検索すると大学のサイトとかで英語版が引っ掛かるけど旧版はセーフなのかな
DFAの構成法は第2版だと3.9節
少なくとも3章は最初から読んだ方がいいと思う
コンパイラに興味ないなら全部読む必要はない
DFAの構成法は第2版だと3.9節
少なくとも3章は最初から読んだ方がいいと思う
コンパイラに興味ないなら全部読む必要はない
288デフォルトの名無しさん
2025/11/07(金) 19:00:36.04ID:Ua2fzQVD そういえば正規表現自体の解析で4章前半のTop-Down Parsingくらいまでは役に立つかも
289デフォルトの名無しさん
2025/11/07(金) 20:27:12.90ID:2v77MqUc >>287
ありがとうございます。旧版 (日本語訳) はT、U共にさっき中古をポチりました
届くのは来週末だけど、図書館に第二版があるようなので明日行ってきます
コンパイラに興味ない、とまでは言わないけど、果たしてそこまで手を広げられるものなのか心許ないす
ありがとうございます。旧版 (日本語訳) はT、U共にさっき中古をポチりました
届くのは来週末だけど、図書館に第二版があるようなので明日行ってきます
コンパイラに興味ない、とまでは言わないけど、果たしてそこまで手を広げられるものなのか心許ないす
290デフォルトの名無しさん
2025/11/11(火) 08:03:53.83ID:TgiPYl91 こういう方に最新版をポンと出す制度にならんもんかな
291デフォルトの名無しさん
2025/11/11(火) 14:34:01.30ID:XyI6oP+4 複数の正規表現を使い分けられる記法があるといい
292デフォルトの名無しさん
2025/11/20(木) 00:34:25.20ID:mbRrNt6G DragonBook (第2版) の第3章まで読んだら、>>280 に書いた ε-遷移についての最初の疑問も氷解してしまったので、
一応伏線回収しておきます
「正規表現技術入門」では、ε-遷移を除去した後で部分集合構成法を行う、という流れで記述されていたので、
部分集合構成法を行うには前もって ε-遷移を除去しなければならない、と思い込んでいたのだけど、
その必要は全くなかったのでした
部分集合構成法の処理の中で一つ部分集合が得られたら、その集合の ε-閉包を取って
(その集合に そこから ε-遷移する状態を全て加えて)、それを DFA の 1 状態とすればよいだけなのでした
>>283 に書いた AI の回答が何となく歯切れが悪かった理由もこれで納得出来たわけで、
何でこんな簡単なことを思い付かなかったのか、我ながらアホでしたね
「正規表現技術入門」は章ごとに執筆者が違っていて、VM 型エンジンの章は鬼雲の作者が直々に書いていて説得力があるのですが、
DFA 型エンジンの章、とくにこの ε-遷移あたりの記述は今一つな感じです (エラそうに言ってますが)
--
ところで DragonBook 3.9 節の「正規表現から直接 DFA を導くやり方」も読みました
シンプソン構成法を経由せず、構文木から DFA を導くのはスゲーと思ったのですが
followpos() の張るダイアグラムは一種の NFA 的なものなので、それを DFA に変換する時には
やはり部分集合構成法と同じ手法を使うわけですね
とは言え ε-遷移が存在しないので扱う状態数もずっと少なくて済むはずなので、
これを使って On-the-Fly 法を実装して行きたいと思ってます
何にせよ、DragonBook を読めと言ってくれた >>285 さんには感謝しかないです
ありがとうございました
一応伏線回収しておきます
「正規表現技術入門」では、ε-遷移を除去した後で部分集合構成法を行う、という流れで記述されていたので、
部分集合構成法を行うには前もって ε-遷移を除去しなければならない、と思い込んでいたのだけど、
その必要は全くなかったのでした
部分集合構成法の処理の中で一つ部分集合が得られたら、その集合の ε-閉包を取って
(その集合に そこから ε-遷移する状態を全て加えて)、それを DFA の 1 状態とすればよいだけなのでした
>>283 に書いた AI の回答が何となく歯切れが悪かった理由もこれで納得出来たわけで、
何でこんな簡単なことを思い付かなかったのか、我ながらアホでしたね
「正規表現技術入門」は章ごとに執筆者が違っていて、VM 型エンジンの章は鬼雲の作者が直々に書いていて説得力があるのですが、
DFA 型エンジンの章、とくにこの ε-遷移あたりの記述は今一つな感じです (エラそうに言ってますが)
--
ところで DragonBook 3.9 節の「正規表現から直接 DFA を導くやり方」も読みました
シンプソン構成法を経由せず、構文木から DFA を導くのはスゲーと思ったのですが
followpos() の張るダイアグラムは一種の NFA 的なものなので、それを DFA に変換する時には
やはり部分集合構成法と同じ手法を使うわけですね
とは言え ε-遷移が存在しないので扱う状態数もずっと少なくて済むはずなので、
これを使って On-the-Fly 法を実装して行きたいと思ってます
何にせよ、DragonBook を読めと言ってくれた >>285 さんには感謝しかないです
ありがとうございました
293デフォルトの名無しさん
2025/11/20(木) 01:53:23.80ID:MRBYucy1 ●Regular Expressionの使用環境
Java1.5
●検索か置換か?
検索
●説明
http://とhttps://があるもしくはない場合のドメインとサブドメインを検索したい
自分で考えた以下の正規表現だと、.から始まる不正なURLまで一致してしまいダメでした
^(https?://)?(.*\.)?doubleclick.net
●対象データ
#一致させたいものは以下
http://doubleclick.net/pagead/
https://doubleclick.net/pagead/
http://g.doubleclick.net/pagead/
https://g.doubleclick.net/pagead/
http://googleads.g.doubleclick.net/pagead/
https://googleads.g.doubleclick.net/pagead/
doubleclick.net/pagead/
g.doubleclick.net/pagead/
googleads.g.doubleclick.net/pagead/
#一致させたくないものは以下
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
0doubleclick.net/pagead/
http://0doubleclick.net/pagead/
https://0doubleclick.net/pagead/
Java1.5
●検索か置換か?
検索
●説明
http://とhttps://があるもしくはない場合のドメインとサブドメインを検索したい
自分で考えた以下の正規表現だと、.から始まる不正なURLまで一致してしまいダメでした
^(https?://)?(.*\.)?doubleclick.net
●対象データ
#一致させたいものは以下
http://doubleclick.net/pagead/
https://doubleclick.net/pagead/
http://g.doubleclick.net/pagead/
https://g.doubleclick.net/pagead/
http://googleads.g.doubleclick.net/pagead/
https://googleads.g.doubleclick.net/pagead/
doubleclick.net/pagead/
g.doubleclick.net/pagead/
googleads.g.doubleclick.net/pagead/
#一致させたくないものは以下
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
0doubleclick.net/pagead/
http://0doubleclick.net/pagead/
https://0doubleclick.net/pagead/
294デフォルトの名無しさん
2025/11/20(木) 09:40:15.39ID:Mz3QCXK6 その処理系で文字クラスが使えるなら (.*\.)? を ([^.0].*\.)? とすればイケるハズ
295293
2025/11/20(木) 15:17:38.43ID:MRBYucy1 >>294
レスありがとうございます
以下の2行は一致しなくなりましたが、
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
以下の6行は一致してしまいました
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
レスありがとうございます
以下の2行は一致しなくなりましたが、
.doubleclick.net/pagead/
.g.doubleclick.net/pagead/
以下の6行は一致してしまいました
http://.doubleclick.net/pagead/
https://.doubleclick.net/pagead/
http://.g.doubleclick.net/pagead/
https://.g.doubleclick.net/pagead/
http://.a.g.doubleclick.net/pagead/
https://.a.g.doubleclick.net/pagead/
296デフォルトの名無しさん
2025/11/20(木) 16:30:51.92ID:0pUMlwmF "doubleclick.net"は決め打ちでいいのかな
Pattern p = Pattern.compile("^(?:https?://)?((?:[^./?#]+\\.)*doubleclick\\.net)(?=[:/]|$)");
マッチした後の処理は分からんけど動作例
https://ideone.com/3WFyH6
Pattern p = Pattern.compile("^(?:https?://)?((?:[^./?#]+\\.)*doubleclick\\.net)(?=[:/]|$)");
マッチした後の処理は分からんけど動作例
https://ideone.com/3WFyH6
297293
2025/11/20(木) 21:15:50.67ID:MRBYucy1 >>296
レスありがとうございます
せっかく教えていただいたのにすみません、JavaではなくてJavaScriptでしたので動作しませんでした
チェッカー
https://www-creators.com/tool/regex-checker
レスありがとうございます
せっかく教えていただいたのにすみません、JavaではなくてJavaScriptでしたので動作しませんでした
チェッカー
https://www-creators.com/tool/regex-checker
298デフォルトの名無しさん
2025/11/20(木) 21:32:25.61ID:0pUMlwmF 今時分にJava1.5でおかしいと思ったけどスルーしてしまった
文字列でエスケープしてる\\を\に直せば使えるはず
ついでに?と#を先読みに追加した(多分いらない)
^(?:https?://)?((?:[^./?#]+\.)*doubleclick\.net)(?=[:/?#]|$)
文字列でエスケープしてる\\を\に直せば使えるはず
ついでに?と#を先読みに追加した(多分いらない)
^(?:https?://)?((?:[^./?#]+\.)*doubleclick\.net)(?=[:/?#]|$)
299293
2025/11/20(木) 21:52:35.87ID:MRBYucy1300デフォルトの名無しさん
2025/11/20(木) 23:34:16.70ID:mbRrNt6G301デフォルトの名無しさん
2025/11/22(土) 12:38:05.41ID:Vr8VfdEk 黄色くなりそう
302デフォルトの名無しさん
2025/12/03(水) 23:55:16.13ID:qGMLhXHy よろしくお願いします
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
1行に複数ある□=■■■;の■■■;(セミコロンも含む)部分を抽出したいです
※フォントに色付けしたいため
●対象データの1行に対して他の色付けの正規表現も使っています
1.txt部分の着色用正規表現 /^(a|mx|cname|srv|txt|@|www)/k
2._dmarc.example.com部分の着色用正規表現 /(?<=^a |mx |cname |srv |txt )(\S)+\s/k
●対象データ
txt _dmarc.example.com v=DMARC1; p=reject; rua=mailto:dmarc_rua@example.com; ruf=mailto:dmarc_ruf@example.com; fo=1; adkim=s; aspf=s;
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
1行に複数ある□=■■■;の■■■;(セミコロンも含む)部分を抽出したいです
※フォントに色付けしたいため
●対象データの1行に対して他の色付けの正規表現も使っています
1.txt部分の着色用正規表現 /^(a|mx|cname|srv|txt|@|www)/k
2._dmarc.example.com部分の着色用正規表現 /(?<=^a |mx |cname |srv |txt )(\S)+\s/k
●対象データ
txt _dmarc.example.com v=DMARC1; p=reject; rua=mailto:dmarc_rua@example.com; ruf=mailto:dmarc_ruf@example.com; fo=1; adkim=s; aspf=s;
303302
2025/12/04(木) 00:04:57.89ID:VPJDZJTH /(?<==)(\S)+/kで出来ました
ありがとうございました
ありがとうございました
304デフォルトの名無しさん
2025/12/04(木) 06:08:13.61ID:eAywzaH6 どういたしまして!
305デフォルトの名無しさん
2025/12/06(土) 22:50:10.26ID:2DkcA45J セミコロンはどこいった
306デフォルトの名無しさん
2025/12/07(日) 02:42:31.53ID:R0icGBd3 DMARCレコードの末尾はセミコロンなくてもいいからじゃね?
それより修飾子kがなにかきになる
それより修飾子kがなにかきになる
307デフォルトの名無しさん
2025/12/07(日) 07:46:42.62ID:UCYK391B プログラムでなくて正規表現メモパッド環境での質問でも良いですか
任意の文字をHTMLエンコード(16進数数値文字参照)するコマンドってありますか
文章:正規表現
検索:規
置換:⸨REGEXコマンド⸩
結果:正&#x898F;表現
的な
任意の文字をHTMLエンコード(16進数数値文字参照)するコマンドってありますか
文章:正規表現
検索:規
置換:⸨REGEXコマンド⸩
結果:正&#x898F;表現
的な
308デフォルトの名無しさん
2025/12/07(日) 11:24:43.85ID:DIZ3oEXF イヤん置換
309デフォルトの名無しさん
2025/12/07(日) 14:08:32.54ID:9FE0dLzx >>306
>DMARCレコードの末尾はセミコロンなくてもいいからじゃね?
なるほどね
>それより修飾子kがなにかきになる
文字のハイライトをしたいときに使うオプションのようだけど
/kが必要になる理由は分からないな
>DMARCレコードの末尾はセミコロンなくてもいいからじゃね?
なるほどね
>それより修飾子kがなにかきになる
文字のハイライトをしたいときに使うオプションのようだけど
/kが必要になる理由は分からないな
310デフォルトの名無しさん
2025/12/07(日) 16:01:19.36ID:W5rWTuKC 使ってるAPI関係の話みたいだよ
-------
Bregexp.dll for SAKURA 互換 API
BMatch(), BMatchEx(), BSplit()
/pattern1/options
m/pattern1/options
BSubst(), BSubstEx()
s/pattern1/pattern2/options
BTrans()
tr/pattern3/pattern4/options
y/pattern3/pattern4/options (Ver.3 以降)
options
k - 文字を日本語(Shift_JIS)として扱うが、Unicode API 利用時は無視される(Bregexp.dll 独自拡張)
-------
hintヒント
正規表現を検索、置換、Grepで利用する場合、「/」をエスケープしたり、「/」で囲ったりする必要はありません。
正規表現キーワードで使う場合は、/text\/css/k のように「/」をエスケープするか m#text/css#k のように書く必要があります。
hint追加情報
検索、置換、Grepでは、正規表現ライブラリに渡す文字列を以下のようにしています。[DELIMITER]は、0xffのバイナリ表記とします。
Unicode版では U+FFFF です。
検索時のオプションは「m[DELIMITER]Pattern[DELIMITER]km」です。
置換時のオプションは「s[DELIMITER]PatternBefore[DELIMITER]PatternAfter[DELIMITER]km」です。
デリミタ相当の文字を検索・置換するにはエスケープが必要です。
また大文字小文字を区別しない場合は最後に「i」が付加されます。
すべて置換で「すべて置換は置換の繰返し」がOFFの場合は「g」が付加されます。
(mオプションが付いていますが、改行をまたいだ検索はできません。)
-------
Bregexp.dll for SAKURA 互換 API
BMatch(), BMatchEx(), BSplit()
/pattern1/options
m/pattern1/options
BSubst(), BSubstEx()
s/pattern1/pattern2/options
BTrans()
tr/pattern3/pattern4/options
y/pattern3/pattern4/options (Ver.3 以降)
options
k - 文字を日本語(Shift_JIS)として扱うが、Unicode API 利用時は無視される(Bregexp.dll 独自拡張)
-------
hintヒント
正規表現を検索、置換、Grepで利用する場合、「/」をエスケープしたり、「/」で囲ったりする必要はありません。
正規表現キーワードで使う場合は、/text\/css/k のように「/」をエスケープするか m#text/css#k のように書く必要があります。
hint追加情報
検索、置換、Grepでは、正規表現ライブラリに渡す文字列を以下のようにしています。[DELIMITER]は、0xffのバイナリ表記とします。
Unicode版では U+FFFF です。
検索時のオプションは「m[DELIMITER]Pattern[DELIMITER]km」です。
置換時のオプションは「s[DELIMITER]PatternBefore[DELIMITER]PatternAfter[DELIMITER]km」です。
デリミタ相当の文字を検索・置換するにはエスケープが必要です。
また大文字小文字を区別しない場合は最後に「i」が付加されます。
すべて置換で「すべて置換は置換の繰返し」がOFFの場合は「g」が付加されます。
(mオプションが付いていますが、改行をまたいだ検索はできません。)
311デフォルトの名無しさん
2025/12/07(日) 16:06:20.28ID:W5rWTuKC サクラエディタにはUnicode版もあるらしいが、そこでも //k が使われるのかは不明
まあこれをそのままユーザーに指定させるってのもどうかなってのは思う
まあこれをそのままユーザーに指定させるってのもどうかなってのは思う
312デフォルトの名無しさん
2025/12/07(日) 19:50:15.24ID:FNtb5kKI bregoing
313デフォルトの名無しさん
2025/12/07(日) 20:01:45.27ID:W5rWTuKC >>312
上のAPIの説明はbregonig.dll(v4.20)に付属の説明書からの抜き出しだよ
4. API
4.1. Bregexp.dll 互換 API (ANSI/Shift_JIS)
以下の Bregexp.dll 互換の API が使用できます。
•BMatch()
•BSubst()
•BTrans()
•BSplit()
•BRegfree()
•BRegexpVersion()
また、以下の Bregexp.dll for SAKURA 互換の API も使用できます。
•BMatchEx()
•BSubstEx()
pattern2, options の部分は bregonig.dll が自前で処理を行っており、Onigmo や Bregexp.dll あるいは Perl とは多少仕様が異なっています。(詳細は後述)
Bregexp.dll に比べて、BMatch(), BSubst(), BSplit() で s, x, a, u, R が使えるように拡張されています。なお、x は pattern1 にのみ効果があり、pattern2 には効果はありません。
Unicode API 利用時は k オプションは無視されます。漢字は常に使用可能です。
5.4. Bregexp.dll との非互換点
•オプションで k (日本語モード) を指定すると、\w は [A-Za-z0-9_] だけでなく、2バイト文字(漢字等)にもマッチするようになります。一方、Bregexp.dll では、オプション k の有無に関わらず、\w は [A-Za-z0-9_] と同義です。なお、Perl 5.8 でも、検索対象が Unicode 文字列(utf8 フラグがオン)ならば、\w は多バイト文字にもマッチします。Bregexp.dll と同じ動作にするには、オプション a を指定してください。
•Onigmo 自体は各種文字エンコーディングに対応していますが、bregonig.dll は Bregexp.dll との互換性のため、従来 API では、ASCII と Shift_JIS 以外の文字エンコーディングは使用できません。(新 API を使うことで、Ver.2 以降では UTF-16LE、Ver.3 以降では UTF-8 も使えます。)
上のAPIの説明はbregonig.dll(v4.20)に付属の説明書からの抜き出しだよ
4. API
4.1. Bregexp.dll 互換 API (ANSI/Shift_JIS)
以下の Bregexp.dll 互換の API が使用できます。
•BMatch()
•BSubst()
•BTrans()
•BSplit()
•BRegfree()
•BRegexpVersion()
また、以下の Bregexp.dll for SAKURA 互換の API も使用できます。
•BMatchEx()
•BSubstEx()
pattern2, options の部分は bregonig.dll が自前で処理を行っており、Onigmo や Bregexp.dll あるいは Perl とは多少仕様が異なっています。(詳細は後述)
Bregexp.dll に比べて、BMatch(), BSubst(), BSplit() で s, x, a, u, R が使えるように拡張されています。なお、x は pattern1 にのみ効果があり、pattern2 には効果はありません。
Unicode API 利用時は k オプションは無視されます。漢字は常に使用可能です。
5.4. Bregexp.dll との非互換点
•オプションで k (日本語モード) を指定すると、\w は [A-Za-z0-9_] だけでなく、2バイト文字(漢字等)にもマッチするようになります。一方、Bregexp.dll では、オプション k の有無に関わらず、\w は [A-Za-z0-9_] と同義です。なお、Perl 5.8 でも、検索対象が Unicode 文字列(utf8 フラグがオン)ならば、\w は多バイト文字にもマッチします。Bregexp.dll と同じ動作にするには、オプション a を指定してください。
•Onigmo 自体は各種文字エンコーディングに対応していますが、bregonig.dll は Bregexp.dll との互換性のため、従来 API では、ASCII と Shift_JIS 以外の文字エンコーディングは使用できません。(新 API を使うことで、Ver.2 以降では UTF-16LE、Ver.3 以降では UTF-8 も使えます。)
314デフォルトの名無しさん
2025/12/08(月) 12:26:55.03ID:Uac8TKoK Bregexp.dllの頃から使われてたオプションっぽいね、20年前にはあったオプションかも
315デフォルトの名無しさん
2025/12/08(月) 21:08:56.84ID:Uac8TKoK 2007年08月13日 の投稿に/kを確認
https://sakura-editor.github.io/bbslog/sf/ansi/4937.html#4960
>正規表現キーワード /\b([0-9A-F]{2})+(?=h)?/k
bregonig.dllを導入するときに/kが必要になった可能性もあるのか
しかしこれ以上調べる気にはなれなかった
https://sakura-editor.github.io/bbslog/sf/ansi/4937.html#4960
>正規表現キーワード /\b([0-9A-F]{2})+(?=h)?/k
bregonig.dllを導入するときに/kが必要になった可能性もあるのか
しかしこれ以上調べる気にはなれなかった
316デフォルトの名無しさん
2025/12/08(月) 21:53:56.42ID:PdAyBLn5 面白いわくわくする
317デフォルトの名無しさん
2025/12/12(金) 00:35:57.86ID:qdqoL0/s よろしくお願いします
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
いかのアドレス範囲に一致させたい
●対象データ
151.145.0.0〜151.145.127.255
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
いかのアドレス範囲に一致させたい
●対象データ
151.145.0.0〜151.145.127.255
318317
2025/12/12(金) 00:48:13.98ID:qdqoL0/s これで合ってますか?
(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
319317
2025/12/12(金) 00:51:57.92ID:qdqoL0/s 間違えました
これで合ってますか?
(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
これで合ってますか?
(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}
320317
2025/12/12(金) 00:52:53.14ID:qdqoL0/s また間違えてました・・・すみません
これで合ってますか?
151.145.(0|[1-9][0-9]?|1(0|1)[0-9]|12[0-7]).(0|[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])
これで合ってますか?
151.145.(0|[1-9][0-9]?|1(0|1)[0-9]|12[0-7]).(0|[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])
321デフォルトの名無しさん
2025/12/12(金) 01:16:30.11ID:9WR4PduZ 細かい部分は見てないけど
とりあえず区切りの.はエスケープしないといけない
とりあえず区切りの.はエスケープしないといけない
322デフォルトの名無しさん
2025/12/12(金) 01:18:48.94ID:/Lx6Nx9f IPアドレスに正規表現を使うなとは言っちゃダメなんだよね
323デフォルトの名無しさん
2025/12/12(金) 01:28:18.32ID:spFFJYjp その心は?
324デフォルトの名無しさん
2025/12/12(金) 01:54:49.45ID:9WR4PduZ これ前後切らないと"151.145.127.256"が"151.145.127.25"で引っ掛かるな
10進数以外の表記が混ざってたら知らん
(?<!\d)(151\.145\.(([1-9]|1[01])?[0-9]|12[0-7])\.(([1-9]|1[0-9]|2[0-4])?[0-9]|25[0-5]))(?!\d)
10進数以外の表記が混ざってたら知らん
(?<!\d)(151\.145\.(([1-9]|1[01])?[0-9]|12[0-7])\.(([1-9]|1[0-9]|2[0-4])?[0-9]|25[0-5]))(?!\d)
325デフォルトの名無しさん
2025/12/12(金) 02:17:39.16ID:VvvzoDh6 JSマクロで正規表現は文字列マッチまでにして
数値の評価はコードでやるのが素直ちゃうかな
数値の評価はコードでやるのが素直ちゃうかな
326デフォルトの名無しさん
2025/12/12(金) 03:07:41.77ID:I1NVdYVn bregoing
328317
2025/12/12(金) 09:21:33.13ID:qdqoL0/s 度々すみません
よろしくお願いします
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
1この数字(15080)だけ除外して、他の全ては一致させたい
●対象データ
10000〜65535
●結果
15080だけ除外したい
よろしくお願いします
●Regular Expressionの使用環境
サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
検索
●説明
1この数字(15080)だけ除外して、他の全ては一致させたい
●対象データ
10000〜65535
●結果
15080だけ除外したい
329317
2025/12/12(金) 09:38:11.84ID:qdqoL0/s また頑張って考えてみたのですが合ってますか?
(6(0-4(0-9)(0-9)(0-9)|5(0-4(0-9)(0-9)|5(0-2(0-9)|(3)0-5))))
(6(0-4(0-9)(0-9)(0-9)|5(0-4(0-9)(0-9)|5(0-2(0-9)|(3)0-5))))
330317
2025/12/12(金) 09:41:37.19ID:qdqoL0/s 全然ダメでした・・・
331317
2025/12/12(金) 09:53:53.88ID:qdqoL0/s 訂正してみました
(1-5(08(1-9)|(1-9)(1-9)(1-9))|6(0-4(0-9)(0-9)(0-9)|5(0-4(0-9)(0-9)|5(0-2(0-9)|(3)0-5))))
(1-5(08(1-9)|(1-9)(1-9)(1-9))|6(0-4(0-9)(0-9)(0-9)|5(0-4(0-9)(0-9)|5(0-2(0-9)|(3)0-5))))
332デフォルトの名無しさん
2025/12/12(金) 10:50:58.26ID:LKIn+XBY (?<!\d)(?!15080(?!\d))\d+
333317
2025/12/12(金) 12:06:38.03ID:qdqoL0/s >>332
それだと9999なども一致していまいました・・・
一致させたいのは以下の通り15080を除く10000〜65535の数字です
●対象データ
10000〜65535
●結果
15080だけ除外したい
それだと9999なども一致していまいました・・・
一致させたいのは以下の通り15080を除く10000〜65535の数字です
●対象データ
10000〜65535
●結果
15080だけ除外したい
334デフォルトの名無しさん
2025/12/12(金) 12:13:35.22ID:rpg4U98A エディタで実行するってことは手作業が前提なのかな?
それなら検索に先立って 15080 を 💩 に置換しておく方が手っ取り早い
それなら検索に先立って 15080 を 💩 に置換しておく方が手っ取り早い
335デフォルトの名無しさん
2025/12/12(金) 12:54:36.94ID:5G5yyPjc (?!15080)(5桁特定範囲マッチ文)
あとは任せた
あとは任せた
336デフォルトの名無しさん
2025/12/12(金) 14:08:50.61ID:GFwk6EHV ログ抽出なら普通にgrepすればいいじゃん
除外したければgrep結果に-vで再grep
除外したければgrep結果に-vで再grep
338デフォルトの名無しさん
2025/12/12(金) 19:47:36.13ID:9WR4PduZ (?!15080)([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])
6桁以上を除外するなら
(?<!\d)((?!15080)([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))(?!\d)
6桁以上を除外するなら
(?<!\d)((?!15080)([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))(?!\d)
339317
2025/12/12(金) 19:49:17.82ID:qdqoL0/s >>335
ありがとうございます
これで合ってますか?
(?!15080)(([1-5]([0-9])([0-9])([0-9])([0-9]))|(6([0-4]([0-9])([0-9])([0-9])|5([0-4]([0-9])([0-9])|5([0-2]([0-9])|(3)[0-5])))))
ありがとうございます
これで合ってますか?
(?!15080)(([1-5]([0-9])([0-9])([0-9])([0-9]))|(6([0-4]([0-9])([0-9])([0-9])|5([0-4]([0-9])([0-9])|5([0-2]([0-9])|(3)[0-5])))))
340317
2025/12/12(金) 19:50:24.52ID:qdqoL0/s >>338
超ありがとうございます!
教えていただいたこちら使わせていただきます
助かりました
(?!15080)([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])
超ありがとうございます!
教えていただいたこちら使わせていただきます
助かりました
(?!15080)([1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])
341317
2025/12/12(金) 21:51:03.49ID:qdqoL0/s342デフォルトの名無しさん
2025/12/12(金) 22:25:23.79ID:lKBtIMua すっきり快便
レスを投稿する
