先読みアサーションって、(マッチさせたい文字列に対応する)本体パターンの後ろに書くものだと思っていたけど、340みたいに前に書くのも一般的なのかな?
(?!15080)([0-9]{5}) が15080にマッチしないのが先読みアサーションの意味論に照らして正しいのか個人的にちょっと自信が持てない(というか疑わしく思う)んだが。
戻り読みアサーションの(?<!15080)([0-9]{5})は15080にマッチするし、こちらの方が意味論どおりの動作のような気がするんだけど。
Regular Expression(正規表現) Part17
344デフォルトの名無しさん
2025/12/14(日) 10:09:57.70ID:+W6SCkp6345デフォルトの名無しさん
2025/12/14(日) 10:25:19.80ID:tGd21ggn 先読みは次に15080が出てこない条件下で後続の5桁の数字にマッチさせる形だから大丈夫そう
戻り読みだと手前に15080が出てこない条件下で後続の5桁の数字にマッチさせるから
1508015080でない限り後続の15080にマッチする
戻り読みだと手前に15080が出てこない条件下で後続の5桁の数字にマッチさせるから
1508015080でない限り後続の15080にマッチする
346デフォルトの名無しさん
2025/12/14(日) 10:32:54.84ID:4RDsvJB6 本体部分のパターンが [0-9]{5} なんだから、先読み・戻り読みのアサーション条件をクリアする限り、15080にもマッチするのが意味論どおりの動作ではないかということなんだが。
347デフォルトの名無しさん
2025/12/14(日) 11:08:03.17ID:Pr7gBHpv ここでグラフィカルに確認できる
https://www.debuggex.com/
https://www.debuggex.com/
348デフォルトの名無しさん
2025/12/14(日) 11:12:12.21ID:C4yAKXLX 先読みは位置を動かさない
つまり、この場合「本体」部分にその文字列が無いのが条件となる
つまり、この場合「本体」部分にその文字列が無いのが条件となる
349デフォルトの名無しさん
2025/12/14(日) 11:14:59.12ID:Pr7gBHpv (?!15080)([0-9]{5})
1508015080は50801にマッチ
15079は15079にマッチ
(?<!15080)([0-9]{5})
1508015080は15080にマッチ ←ここ
15079は15079にマッチ
1508015080は50801にマッチ
15079は15079にマッチ
(?<!15080)([0-9]{5})
1508015080は15080にマッチ ←ここ
15079は15079にマッチ
350デフォルトの名無しさん
2025/12/14(日) 11:24:53.49ID:C4yAKXLX よくある使い方
((?!abc).)+
abcでない文字列
((?!abc).)+
abcでない文字列
351デフォルトの名無しさん
2025/12/14(日) 11:28:30.93ID:C4yAKXLX 1文字の場合は [^a]+
これの複数文字パターンってこと
これの複数文字パターンってこと
352デフォルトの名無しさん
2025/12/14(日) 11:47:42.73ID:4RDsvJB6 うーん、ちょっとアサーションについて誤解していたところがあったかも。考え直してみますわ。
353デフォルトの名無しさん
2025/12/14(日) 12:38:24.68ID:C4yAKXLX 順序を逆にすると本体部分で位置が進むので
([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でストップする
([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でストップする
レスを投稿する
ニュース
- こども家庭庁、2026年から“独身税”を開始、年収200万なら年4200円、年収400万なら年7800円 [お断り★]
- 山里亮太、フィリピンに子ども食堂を建設 「偽善者」「日本の子どもを助けるべき」の声があっても活動を続ける理由 [Anonymous★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★3 [Hitzeschleier★]
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★4 [少考さん★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 [少考さん★]
- 【芸能】粗品 「間違ったお笑いの常識が放送されている」「テレビ見てる素人って、笑い声でしか面白いかどうか判断できない。可哀想」 [冬月記者★]
- 他サポ2025-302
- 【NJPW】新日本プロレスワールド part.2431
- 阪神競馬5回4日目 阪神JF
- 第80回甲子園ボウル 立命館大学 vs 関西学院大学★1
- 第80回甲子園ボウル 立命館大学 vs 関西学院大学★2
- 中山競馬5回4日目その2カペラエス
- 【悲報】中学の頃ワイ彡(゚)(゚)、『ひぐらし』のキャラに恋をして無事死亡wwwwwww🏡
- 【悲報】ココナッツサブレ、なぜか売り切れ続出する🤔 [733893279]
- 【悲報】すまん何で日本ってこんなに反『中国』が増えたんだ?ネトウヨどころかそこらの一般人レベルでもゴロゴロいる [483447288]
- あ、出ちゃう、イクッ😫💦🏡
- ( ・᷄ὢ・᷅ )デカいんで
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪★6
