php - 无法在 php 正则表达式中使用 OR( | )

标签 php regex hyperlink

我是这里的新手。我在 PHP 中使用正则表达式时遇到一个奇怪的问题。

$result = "some very long long string with different kind of links";

$regex='/<.*?href.*?="(.*?net.*?)"/'; //this is the regex rule

preg_match_all($regex,$result,$parts);

在此代码中,我尝试从结果字符串中获取链接。但它只会向我提供那些包含 .net 的链接。但我也想获得那些带有 .com 的链接。为此我尝试了这段代码

    $regex='/<.*?href.*?="(.*?net|com.*?)"/';

但是什么也没显示。

抱歉我的英语不好。

提前致谢。

更新1:

现在我正在使用这个

$regex='/<.*?href.*?="(.*?)"/';

此规则从字符串中获取所有链接。但这并不完美。因为它还获取其他子字符串,例如“javascript”。

最佳答案

| 字符适用于捕获组内的所有内容,因此 (.*?net|com.*?) 将匹配 .*?net com.*?,我想你想要的是 (.*?(net|com).*?)

如果您不需要额外的捕获组,可以使用 (.*?(?:net|com).*?)

您也可以使用(.*?net.*?|.*?com.*?),但不建议这样做,因为不必要的重复。

关于php - 无法在 php 正则表达式中使用 OR( | ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305217/

相关文章:

php - Laravel 5.7 电子邮件验证路由

Python - 正则表达式 - 来自 Xpath - TypeError : '_sre.SRE_Match' object is not subscriptable

python - 在 Python 2.7.2 中使用 REGEX 检索字符串

seo - 阻止网页中的 "here"链接的原因

ios - href=电话 :555 link not working in mobile safari

PHP unix 时间戳比较

php - 调用未定义的方法 Illuminate\Database\Query\Builder::unique()

php - 如何使用mysql order by从更相似的值中仅选择一个值

php - 正则表达式最适合这个问题吗?

VBA excel,工作表复制但超链接已更改