否定先読みでいろいろなパターンを勉強しようと思って取り組んでいるのですが、どうしても理由がわからないことがあります。
次の2つの$urlですが、?q=aaa
の直前のスラッシュの有無が、否定先読みの効果に影響するのはどうしてなのでしょうか?
/?q=aaa
→否定先読みが効く
?q=aaa
→否定先読みが効かない
というのがなぜか?わからないのです。
php
1// スラッシュがある→否定先読みが効く 2$url = "https://example.com/jp/?q=aaa"; 3$pattern = '{https?://example.com/(?!xx)/(?!?q=)}'; 4var_dump( is_match( $url, $pattern ) ); 5 6// スラッシュがない→否定先読みが効かない 7$url = "https://example.com/jp?q=aaa"; 8$pattern = '{https?://example.com/(?!xx)(?!?q=)}'; 9var_dump( is_match( $url, $pattern ) ); 10 11// 検証コード 12function is_match( $url, $pattern ){ 13 if ( preg_match( $pattern, $url , $match ) ) { 14 return '一致'; 15 } else { 16 return '不一致'; 17 } 18}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/02 07:31
2020/08/02 07:45
2020/08/02 07:50