1

提供された URL がサイトのインデックス ページであるかどうかを示す正規表現を考え出そうとしています。つまり、domain.com、domain.com/、および domain.com/index.php と一致する必要がありますが、domain.com/page.php とは一致しません。

これは私がテストのために思いついたリストです。www/nonwww、http/https、末尾のスラッシュなどによる非常に多くの順列。

これらに一致する必要があります。

これらと一致するべきではありません

(私が除外した他の組み合わせはありますか??)

これまでに思いついたのは次のとおりです。

site.com(/|index.php|)

/page 値とも一致しているため、これは明らかに正しくありません。

4

2 に答える 2

7

これは機能します

^https?://[^/]+(/(\?.*|index\.php(\?.*)?)?)?$

これは一般的な正規表現であることに注意してください。フレーバーに合わせるには、エスケープする必要があるかもしれません。

ここで簡単なテストを実行した後egrepの結果は次のとおりです

$ while read x 
>       do 
>           if  echo $x | egrep '^https?://[^/]+(/(\?.*|index\.php(\?.*)?)?)?$' > /dev/null
>           then  
>               echo MATCH $x
>           else 
>               echo NOT MATCH $x 
>           fi
>       done < data
MATCH http://site.com/index.php
MATCH http://site.com/
MATCH http://site.com
MATCH http://site.com/index.php?var=X
MATCH http://site.com/?var=X
MATCH http://site.com?var=X
MATCH https://site.com/index.php
MATCH https://site.com/
MATCH https://site.com
MATCH https://site.com/index.php?var=X
MATCH https://site.com/?var=X
MATCH https://site.com?var=X
MATCH http://www.site.com/index.php
MATCH http://www.site.com/
MATCH http://www.site.com
MATCH http://www.site.com/index.php?var=X
MATCH http://www.site.com/?var=X
MATCH http://www.site.com?var=X
MATCH https://www.site.com/index.php
MATCH https://www.site.com/
MATCH https://www.site.com
MATCH https://www.site.com/index.php?var=X
MATCH https://www.site.com/?var=X
MATCH https://www.site.com?var=X
NOT MATCH http://site.com/page.php
NOT MATCH http://site.com/page.php?var=X
NOT MATCH http://site.com/page
NOT MATCH http://site.com/page/
NOT MATCH http://site.com/page/index.php
NOT MATCH http://site.com/page?var=X
NOT MATCH http://site.com/page/?var=X
NOT MATCH https://site.com/page.php
NOT MATCH https://site.com/page.php?var=X
NOT MATCH https://site.com/page
NOT MATCH https://site.com/page/
NOT MATCH https://site.com/page/index.php
NOT MATCH https://site.com/page?var=X
NOT MATCH https://site.com/page/?var=X
NOT MATCH http://www.site.com/page.php
NOT MATCH http://www.site.com/page.php?var=X
NOT MATCH http://www.site.com/page
NOT MATCH http://www.site.com/page/
NOT MATCH http://www.site.com/page/index.php
NOT MATCH http://www.site.com/page?var=X
NOT MATCH http://www.site.com/page/?var=X
NOT MATCH https://www.site.com/page.php
NOT MATCH https://www.site.com/page.php?var=X
NOT MATCH https://www.site.com/page
NOT MATCH https://www.site.com/page/
NOT MATCH https://www.site.com/page/index.php
NOT MATCH https://www.site.com/page?var=X
NOT MATCH https://www.site.com/page/?var=X
于 2012-12-18T19:53:13.750 に答える
0

PHPでこれを行っているとしましょう。parse_url()(http://php.net/manual/en/function.parse-url.php) を使用してから、パス要素を確認する必要があります。

<?php
$url = "http://example.com/index.php?page=1";
$path = parse_url($url, PHP_URL_PATH);
print "path=$path\n";
?>

それを実行すると、

path=/index.php

のパスだけを取得したら、またはまたはその他$pathに一致させるだけです。正規表現は必要ありません。//index.php

于 2012-12-18T21:12:41.927 に答える