正则表达式以http开头并以pdf结尾?

Web*_*urk 8 php regex preg-match

我已经加载了整个页面的HTML,并希望检索所有以http开头并以pdf结尾的URL.我写了以下哪些不起作用:

$html = file_get_contents( "http://www.example.com" );
preg_match( '/^http(pdf)$/', $html, $matches );
Run Code Online (Sandbox Code Playgroud)

我对正则表达式很新,但是从我学到的东西^标志着一个模式的开始并$标志着结束.我究竟做错了什么?

SLa*_*aks 8

您需要匹配URL中间的字符:

/\bhttp[\w%+\/-]+?pdf\b/
Run Code Online (Sandbox Code Playgroud)
  • \b 匹配单词边界

  • ^$标记整个字符串的开头和结尾.你不希望他们在这里.

  • [...] 匹配括号中的任何字符

  • \w 匹配任何单词字符

  • + 匹配上一场比赛的一场或多场比赛

  • ?使得+懒惰而不是贪婪


Bil*_*oon 5

preg_match( '/http[^\s]+pdf/', $html, $matches );

匹配http后跟非 ( [^...]) 空格 ( \s) 一次或多次 ( +) 后跟pdf