Regular Expression(正規表現) Part17at TECH
Regular Expression(正規表現) Part17 - 暇つぶし2ch339:317
25/12/12 19:49:17.82 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
25/12/12 19:50:24.52 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
25/12/12 21:51:03.49 qdqoL0/s.net
>>334
スクリプト作るのがめんどくさくてサクラエディタのキーマクロで置換してたんですけど
つい先ほどWSH(JScript)で置換することにしました
💩速くなりました

342:デフォルトの名無しさん
25/12/12 22:25:23.79 lKBtIMua.net
すっきり快便

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

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

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

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

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

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

347:デフォルトの名無しさん
25/12/14 11:08:03.17 Pr7gBHpv.net
ここでグラフィカルに確認できる
URLリンク(www.debuggex.com)

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

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

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

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

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

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

353:デフォルトの名無しさん
25/12/14 12:38:24.68 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:デフォルトの名無しさん
25/12/14 20:13:40.52 pwvrkpuI.net
この正規表現で前後の半角空白を除く
descriptionだけを一致させる正規表現を教えて欲しいです
環境はサクラエディタです

/ ?description /

355:デフォルトの名無しさん
25/12/14 21:35:52.99 IHataGt8.net
/description(?= )/

356:デフォルトの名無しさん
25/12/14 21:55:21.25 pwvrkpuI.net
>>355
ありがとうございました!

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

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

359:デフォルトの名無しさん
25/12/15 15:36:51.41 u2LUgxm/.net
AIωにやらせてみたら


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch