gpt4 book ai didi

php - 不能在 PHP 正则表达式中使用 OR(|)

转载 作者:行者123 更新时间:2023-12-02 22:04:52 26 4
gpt4 key购买 nike

我是新手。我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com