从众多网址中提取包含/ find /的网址?

时间:2012-08-06 22:43:03

标签: php regex

我真的是RegEx的主要新手,可以提供一些帮助。

我有一个包含大量URL和其他文本的长字符串,其中一个URL包含has / find /。即:

1. http://www.example.com/not/index.html
2. http://www.example.com/sat/index.html
3. http://www.example.com/find/index.html
4. http://www.example.com/rat/mine.html
5. http://www.example.com/mat/find.html

我会使用哪种RegEx来返回该列表中第3个的URL,但也不会返回第5个?我想基本上我正在寻找的是一种返回包含一组特定字母和/或按顺序的整个单词的方法。

TIA

3 个答案:

答案 0 :(得分:2)

我认为你想要preg_match("%/find/%",$input);或类似的。

编辑:要获得完整的一行,请使用:

preg_match("%^.*?/find/.*$%m",$input);

答案 1 :(得分:1)

我建议您使用RegExr生成正则表达式。

您可以输入样本列表(如上所示)并使用调色板创建RegExp并实时测试。该程序可在线获得,也可作为可下载的Adobe AIR软件包使用。

很遗憾,我现在无法访问他们的网站,因此我附上the AIR package of the downloadable version

我真的推荐你这个,因为它帮助像我这样的RegExp新手设计了最复杂的模式。

然而,对于你的问题,我认为只是

\/find\/
如果你想获得是/否结果(即如果它包含或不包含/find/),

顺利进行,否则获得全线使用

.*\/find\/.*

答案 2 :(得分:0)

除了Kolink的回答,如果你想要正则表达式匹配整个URI:

绝不是 URI的详尽正则表达式,但是this is a good starting point。我在关键点提出了几个选项,例如.com.net.org。实际上,由于缺乏一致性,你会很难将URI与正则表达式匹配,但你可以非常接近

来自上述链接的正则表达式:

/(https?:\/\/)?(www\.)?([a-zA-Z0-9-_]+)\.(com|org|net)\/(find)\/([a-zA-Z0-9-_]+)\.(html|php|aspx)?/is