Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 与主页/索引页匹配的URL的正则表达式_Regex_Url - Fatal编程技术网

Regex 与主页/索引页匹配的URL的正则表达式

Regex 与主页/索引页匹配的URL的正则表达式,regex,url,Regex,Url,我试图找到一个正则表达式,它将指示所提供的url是否是站点的索引页。这意味着它必须匹配domain.com、domain.com/和domain.com/index.php,但不能匹配domain.com/page.php 这是我为测试准备的清单。由于www/NONWW、http/https、尾部斜杠等原因,出现了如此多的排列 它应与以下各项相匹配: 它不应该与这些匹配 还有我遗漏的其他组合吗 到目前为止,我想到的是: site.com/| index.php| 这显然是不正确的,因为它也与/p

我试图找到一个正则表达式,它将指示所提供的url是否是站点的索引页。这意味着它必须匹配domain.com、domain.com/和domain.com/index.php,但不能匹配domain.com/page.php

这是我为测试准备的清单。由于www/NONWW、http/https、尾部斜杠等原因,出现了如此多的排列

它应与以下各项相匹配:

它不应该与这些匹配

还有我遗漏的其他组合吗

到目前为止,我想到的是:

site.com/| index.php|

这显然是不正确的,因为它也与/page值匹配。

这是有效的

注意这是一个通用正则表达式。为了搭配你的口味,你可能需要逃避

在使用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
这很有效

注意这是一个通用正则表达式。为了搭配你的口味,你可能需要逃避

在使用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

假设您正在使用PHP进行此操作。您应该使用parse_urlhttp://php.net/manual/en/function.parse-url.php 然后看看path元素

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

一旦您在$path中找到了路径,就只需要匹配到/或/index.php或其他内容。不需要正则表达式。

假设您正在用PHP进行此操作。您应该使用parse_urlhttp://php.net/manual/en/function.parse-url.php 然后看看path元素

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


一旦您在$path中找到了路径,就只需要匹配到/或/index.php或其他内容。不需要正则表达式。

什么语言?纯正则表达式可能不是最好的方法,正则表达式几乎肯定不是最好的方法。使用URL解析器解析URL,然后分析从中返回的路径是一种方法。使用哪种语言?纯正则表达式可能不是最好的方法,正则表达式几乎肯定不是最好的方法。使用URL解析器解析URL,然后分析从URL解析器返回的路径,这是一个好方法。哇,谢谢!现在我只需要让我的大脑去理解那些问号。作为补充说明,当我使用测试时,任何与url不相似的内容都会与ie“asdasdasd”匹配。这应该很好,因为我只测试URL,只是觉得很奇怪。正如我告诉你的,你需要正确地逃逸。它的POSIX正则表达式。相应地转换为您最喜欢的风格,或者在您的语言中找到POSIX支持的函数。@ShaneN也可以在regexpal.com上查看它的作品。请参阅。您也可以使用以下内容捕获结尾带有锚定的URL,例如:^https?:\/\/[^/]+\/\?.*index\.php\?.*?$Wow谢谢!现在我只需要让我的大脑去理解那些问号。作为补充说明,当我使用测试时,任何与url不相似的内容都会与ie“asdasdasd”匹配。这应该很好,因为我只测试URL,只是觉得很奇怪。正如我告诉你的,你需要正确地逃逸。它的POSIX正则表达式。相应地转换为您最喜欢的风格,或者在您的语言中找到POSIX支持的函数。@ShaneN也可以在regexpal.com上查看它的作品。请参阅。您也可以使用以下内容捕获结尾带有锚定的URL,例如:^https?:\/\/[^/]+\/\?..*index\.php\?.*?。$是的,我希望能够使用php。但是我在一个只允许regexp的工具中使用它,那么这个工具是什么呢?也许我们可以帮助解决只使用正则表达式的限制。嘿,安迪,这是给谷歌标签管理器的。我需要定义一个规则,当有人在索引页上时。我认为唯一可行的方法是设置一个当url匹配正则表达式时触发的规则。其他选项包括url是否包含、以开头、以结尾等。这似乎是一个很酷的工具,但我现在正在试用它。你以前用过它吗?我没有,我简单地看了一下文档,让我惊讶的是,它们只提供整个URL,而没有单独的元素,比如路径或查询字符串。也许另一个解决方案是在你的主页上放置一个元素,表示我是一个主页,并使用基于DOM的规则来检测它。嘿,安迪-我同意-路径或查询字符串会很有帮助-也许他们正在处理它,因为这仍然是一个非常新的问题。总体而言,使用基于dom的规则来查找特定的主页元素可能是一种更好的方法,因为这个regexp似乎有些过分。谢谢你的洞察力!是的,我希望我能使用PHP。但是我在一个只允许regexp的工具中使用它,那么这个工具是什么呢?也许我们可以帮助解决只使用正则表达式的限制。嘿,安迪,这是给谷歌标签管理器的。我需要定义一个规则,当有人在索引页上时。我认为唯一可行的方法是设置一个当url匹配正则表达式时触发的规则。其他选项包括url是否包含、以开头、以结尾等。这似乎是一个很酷的工具,但我现在正在试用它。你以前用过它吗?我没有,我简单地看了一下文档,让我惊讶的是,它们只给你整个URL,而不是像pa这样的单个元素
th或查询字符串。也许另一个解决方案是在你的主页上放置一个元素,表示我是一个主页,并使用基于DOM的规则来检测它。嘿,安迪-我同意-路径或查询字符串会很有帮助-也许他们正在处理它,因为这仍然是一个非常新的问题。总体而言,使用基于dom的规则来查找特定的主页元素可能是一种更好的方法,因为这个regexp似乎有些过分。谢谢你的洞察力!