使用正则表达式从 link 中提取单引号和双引号网址

Extract single and double quotes urls from link using regex

我需要使用正则表达式为 PHP 脚本提取 Twitter ID。只要 URL 用双引号编码,它就很好用...

<a href='http://www.twitter.com/singlequotes'>Twitter Single Quotes</a>
<a href="http://www.twitter.com/doublequotes">Twitter Double Quotes</a>

// regular expression
/<a [^>]*\bhref\s*=\s*"\K[^"]*twitter.com[^"]*/

我试过使用 "|'["'] 和许多其他东西,但都不起作用。如果你能帮我解决这个问题,我将不胜感激。谢谢!

https://regex101.com/r/7Zu3uF/1

这已经是您所能达到的最快速度了。不需要捕获组。

href=['"]\K[^'"]+

Pattern Demo

href= 之后查找单引号或双引号,然后匹配不是单引号或双引号的所有内容。就是这么简单。

p.s。如果您担心 = 附近的空格,请使用:

href *= *['"]\K[^'"]+

PHP 实施(PHP Demo):

$in='<a href=\'http://www.twitter.com/singlequotes\'>Twitter Single Quotes</a>
<a href="http://www.facebook.com/doublequotes">Twitter Double Quotes</a>
<a href=\'http://twitter.com/singlequotes\'>Twitter Single Quotes</a>
<a href="https://www.facebook.com/doublequotes">Twitter Double Quotes</a>';

$companies=['twitter','facebook'];

$out=preg_match_all('/href *= *[\'"]\Khttps?:\/\/(?:www\.)?(?:'.implode('|',$companies).')\.com[^\'"]+/',$in,$out)?$out[0]:[];

var_export($out);