[表示 : 全て 最新50 1-99 101- 201- 301- 2ch.scのread.cgiへ]
Update time : 01/09 00:31 / Filesize : 90 KB / Number-of Response : 369
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part17



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

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

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

次スレは>>980宜しく
テンプレ>>2以降

319 名前:317 mailto:age [2025/12/12(金) 00:51:57.92 ID:qdqoL0/s.net]
間違えました

これで合ってますか?
(?: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}

320 名前:317 mailto:age [2025/12/12(金) 00:52:53.14 ID:qdqoL0/s.net]
また間違えてました・・・すみません

これで合ってますか?
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 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 01:16:30.11 ID:9WR4PduZ.net]
細かい部分は見てないけど
とりあえず区切りの.はエスケープしないといけない

322 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 01:18:48.94 ID:/Lx6Nx9f.net]
IPアドレスに正規表現を使うなとは言っちゃダメなんだよね

323 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 01:28:18.32 ID:spFFJYjp.net]
その心は?

324 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 01:54:49.45 ID:9WR4PduZ.net]
これ前後切らないと"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)

325 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 02:17:39.16 ID:VvvzoDh6.net]
JSマクロで正規表現は文字列マッチまでにして
数値の評価はコードでやるのが素直ちゃうかな

326 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 03:07:41.77 ID:I1NVdYVn.net]
bregoing

327 名前:317 mailto:age [2025/12/12(金) 09:10:56.65 ID:qdqoL0/s.net]
>>324
ありがとうございました!
ログの抽出なので、.256は記録自体されないので大丈夫でした
助かりました



328 名前:317 mailto:age [2025/12/12(金) 09:21:33.13 ID:qdqoL0/s.net]
度々すみません
よろしくお願いします

●Regular Expressionの使用環境
 サクラエディタ32bit Ver2.4.2.6048(bregoing.dll Ver.4.20 with Onigmo 6.2.0)
●検索か置換か?
 検索
●説明
 1この数字(15080)だけ除外して、他の全ては一致させたい
●対象データ
 10000〜65535
●結果
 15080だけ除外したい

329 名前:317 mailto:age [2025/12/12(金) 09:38:11.84 ID:qdqoL0/s.net]
また頑張って考えてみたのですが合ってますか?

(6(0-4(0-9)(0-9)(0-9)|5(0-4(0-9)(0-9)|5(0-2(0-9)|(3)0-5))))

330 名前:317 mailto:age [2025/12/12(金) 09:41:37.19 ID:qdqoL0/s.net]
全然ダメでした・・・

331 名前:317 mailto:age [2025/12/12(金) 09:53:53.88 ID:qdqoL0/s.net]
訂正してみました
(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 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 10:50:58.26 ID:LKIn+XBY.net]
(?<!\d)(?!15080(?!\d))\d+

333 名前:317 mailto:age [2025/12/12(金) 12:06:38.03 ID:qdqoL0/s.net]
>>332
それだと9999なども一致していまいました・・・
一致させたいのは以下の通り15080を除く10000〜65535の数字です

●対象データ
 10000〜65535
●結果
 15080だけ除外したい

334 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 12:13:35.22 ID:rpg4U98A.net]
エディタで実行するってことは手作業が前提なのかな?
それなら検索に先立って 15080 を 💩 に置換しておく方が手っ取り早い

335 名前:デフォルトの名無しさん [2025/12/12(金) 12:54:36.94 ID:5G5yyPjc.net]
(?!15080)(5桁特定範囲マッチ文)
あとは任せた

336 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 14:08:50.61 ID:GFwk6EHV.net]
ログ抽出なら普通にgrepすればいいじゃん
除外したければgrep結果に-vで再grep

337 名前:317 mailto:age [2025/12/12(金) 19:24:53.03 ID:qdqoL0/s.net]
>>335
肝心な部分たのまい!



338 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 19:47:36.13 ID:9WR4PduZ.net]
(?!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)

339 名前:317 mailto:age [2025/12/12(金) 19:49:17.82 ID:qdqoL0/s.net]
>>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])))))

340 名前:317 mailto:age [2025/12/12(金) 19:50:24.52 ID:qdqoL0/s.net]
>>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])

341 名前:317 mailto:age [2025/12/12(金) 21:51:03.49 ID:qdqoL0/s.net]
>>334
スクリプト作るのがめんどくさくてサクラエディタのキーマクロで置換してたんですけど
つい先ほどWSH(JScript)で置換することにしました
💩速くなりました

342 名前:デフォルトの名無しさん mailto:sage [2025/12/12(金) 22:25:23.79 ID:lKBtIMua.net]
すっきり快便

343 名前:デフォルトの名無しさん mailto:sage [2025/12/13(土) 01:35:26.40 ID:klNuhF9X.net]
JScriptで検索自体を素直に書けるのに正規表現のみにこだわる必要がない
外部コマンドでタグジャンプ用の出力するのもあり

344 名前:デフォルトの名無しさん [2025/12/14(日) 10:09:57.70 ID:+W6SCkp6.net]
先読みアサーションって、(マッチさせたい文字列に対応する)本体パターンの後ろに書くものだと思っていたけど、340みたいに前に書くのも一般的なのかな?

(?!15080)([0-9]{5}) が15080にマッチしないのが先読みアサーションの意味論に照らして正しいのか個人的にちょっと自信が持てない(というか疑わしく思う)んだが。
戻り読みアサーションの(?<!15080)([0-9]{5})は15080にマッチするし、こちらの方が意味論どおりの動作のような気がするんだけど。

345 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 10:25:19.80 ID:tGd21ggn.net]
先読みは次に15080が出てこない条件下で後続の5桁の数字にマッチさせる形だから大丈夫そう

戻り読みだと手前に15080が出てこない条件下で後続の5桁の数字にマッチさせるから
1508015080でない限り後続の15080にマッチする

346 名前:デフォルトの名無しさん [2025/12/14(日) 10:32:54.84 ID:4RDsvJB6.net]
本体部分のパターンが [0-9]{5} なんだから、先読み・戻り読みのアサーション条件をクリアする限り、15080にもマッチするのが意味論どおりの動作ではないかということなんだが。

347 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 11:08:03.17 ID:Pr7gBHpv.net]
ここでグラフィカルに確認できる
https://www.debuggex.com/



348 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 11:12:12.21 ID:C4yAKXLX.net]
先読みは位置を動かさない
つまり、この場合「本体」部分にその文字列が無いのが条件となる

349 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 11:14:59.12 ID:Pr7gBHpv.net]
(?!15080)([0-9]{5})
1508015080は50801にマッチ
15079は15079にマッチ

(?<!15080)([0-9]{5})
1508015080は15080にマッチ ←ここ
15079は15079にマッチ

350 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 11:24:53.49 ID:C4yAKXLX.net]
よくある使い方
((?!abc).)+
abcでない文字列

351 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 11:28:30.93 ID:C4yAKXLX.net]
1文字の場合は [^a]+
これの複数文字パターンってこと

352 名前:デフォルトの名無しさん [2025/12/14(日) 11:47:42.73 ID:4RDsvJB6.net]
うーん、ちょっとアサーションについて誤解していたところがあったかも。考え直してみますわ。

353 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 12:38:24.68 ID:C4yAKXLX.net]
順序を逆にすると本体部分で位置が進むので
([a-z](?!abc))+
abcd → abcd ;先頭はabcだがaの後ろにはabcがないのでaにもマッチする
xabcd → abcd
[a-z]+(?!abc)なら
xabcd → xabcd ; [a-z]+でxabcdがマッチしその後ろにはabcが無いので
[a-z]+(?<!bcd)なら
abcd → abc ; abcdと進んでいくとbcdにマッチするので逆行してabcでストップする

354 名前:デフォルトの名無しさん [2025/12/14(日) 20:13:40.52 ID:pwvrkpuI.net]
この正規表現で前後の半角空白を除く
descriptionだけを一致させる正規表現を教えて欲しいです
環境はサクラエディタです

/ ?description /

355 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 21:35:52.99 ID:IHataGt8.net]
/description(?= )/

356 名前:デフォルトの名無しさん [2025/12/14(日) 21:55:21.25 ID:pwvrkpuI.net]
>>355
ありがとうございました!

357 名前:デフォルトの名無しさん mailto:sage [2025/12/14(日) 23:41:29.96 ID:IHataGt8.net]
>>346
戻り読み・先読みアサーションにはそれぞれ肯定と否定があります
(?<=肯定戻り読み) (?=肯定先読み)
(?<!否定戻り読み) (?!否定先読み)



358 名前:デフォルトの名無しさん mailto:sage [2025/12/15(月) 15:01:06.10 ID:3kfMtGyS.net]
複雑な正規表現をawkなどに書き換える、
逆に正規表現に戻す
そんなツールがあればいいのに

359 名前:デフォルトの名無しさん [2025/12/15(月) 15:36:51.41 ID:u2LUgxm/.net]
AIωにやらせてみたら

360 名前:デフォルトの名無しさん mailto:sage [2025/12/29(月) 21:58:52.64 ID:mqxopxhe.net]
●Regular Expressionの使用環境
 bregonig.dll Ver.4.20 with Onigmo 6.2.0 (JaneXeno)
●検索か置換か?
 置換
●説明
 URLの一部が削られた文字列を置換したい
●対象データ
 ttps://mevius.5ch.net/その他文字列
 tps://mevius.5ch.net/その他文字列
 ps://mevius.5ch.net/その他文字列
 s://mevius.5ch.net/その他文字列
 ://mevius.5ch.net/その他文字列
 //mevius.5ch.net/その他文字列
 /mevius.5ch.net/その他文字列
 mevius.5ch.net/その他文字列

 ttp://mevius.5ch.net/その他文字列
 tp://mevius.5ch.net/その他文字列
 p://mevius.5ch.net/その他文字列
●結果
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列
 https://mevius.5ch.net/その他文字列

 mevius.5ch.net/その他文字列
 mevius.5ch.net/その他文字列
 mevius.5ch.net/その他文字列

361 名前:360 mailto:sage [2025/12/29(月) 21:59:07.48 ID:mqxopxhe.net]
よろしくお願いします

362 名前:デフォルトの名無しさん mailto:sage [2025/12/30(火) 05:55:09.00 ID:bcWUa/MK.net]
^.*(mevius\.5ch\.net/.*)
https://\1
ニャン美mevius.5ch.net/その他文字列も置換されちゃう

363 名前:デフォルトの名無しさん mailto:sage [2025/12/30(火) 06:05:12.11 ID:RY68pJU/.net]
>>362
最初のドットを文字クラス [htps:/] にするとか
少なくとも誤爆は減らせるはず

364 名前:360 mailto:sage [2025/12/30(火) 11:26:41.11 ID:08XhdD3t.net]
>>362
すみません、この部分はランダムでした
mevius.5ch.net/その他文字列

365 名前:デフォルトの名無しさん mailto:sage [2025/12/30(火) 13:59:05.54 ID:kaQsBrDf.net]
(((((((h?t)?t)?p)?s?)?:)?/)?/)?【残り部分】
https://【残り部分】

俺の頭ではhttps決め打ちしかできませんでした

366 名前:360 mailto:sage [2025/12/30(火) 18:13:17.87 ID:08XhdD3t.net]
1個ずつ置換することにしました

367 名前:デフォルトの名無しさん mailto:sage [2025/12/30(火) 19:42:45.38 ID:OIM6lPsW.net]
1個ずつ置換のほうが処理速度が早いからそれで良いかと



368 名前:デフォルトの名無しさん mailto:sage [2026/01/03(土) 10:24:35.26 ID:1DqJer1z.net]
株式会社アイ・エス・ビー
https://kizuna.5ch.net/test/read.cgi/infosys/1756826944/






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<90KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef