gpt4 book ai didi

php - php正则表达式的使用方法

转载 作者:行者123 更新时间:2023-12-04 07:27:20 26 4
gpt4 key购买 nike

我想从以 开头的字符串中计算星号foo 'fooarbazlujabazlewis*bazbazlewbaz' 我应该能够从另一个以 开始的字符串中计算星号luja 简而言之,我希望以编程方式更改起始字符串
我尝试了下面的代码,但即使 也算星号foo 不是在开始

preg_match_all('/(^foo\*)*(\*)/', '*foo*arbaz*luj*abaz*lewis*bazbazlewbaz'); 
结果是 6 .但在这种情况下,我希望它失败,因为 foo 不是一开始。

最佳答案

它不是正则表达式的最佳应用程序,但您可以使用

preg_match_all('~(?:\G(?!\A)|^foo)[^*]*\K\*~', $string, $matches)
regex demo .细节:
  • (?:\G(?!\A)|^foo) - 上一次成功匹配的结束或 foo在字符串的开头
  • [^*]* - 除 * 之外的零个或多个字符
  • \K - 丢弃目前匹配的文本
  • \* - 一个星号。

  • PHP demo :
    $string = "foo*arbaz*luj*abaz*lewis*bazbazlewbaz";
    echo preg_match_all('~(?:\G(?!\A)|^foo)[^*]*\K\*~', $string, $matches);
    // => 5
    如果没有正则表达式,您可以简单地检查是否 foo出现在字符串的开头(使用 strpos )然后使用 substr_count 计算星号的出现次数:
    $string = "foo*arbaz*luj*abaz*lewis*bazbazlewbaz";
    if (strpos($string, "foo") === 0 ) {
    echo substr_count($string, "*");
    }
    this PHP demo .

    关于php - php正则表达式的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68142998/

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