Php 从正则表达式中提取不区分大小写的单词

Php 从正则表达式中提取不区分大小写的单词,php,regex,Php,Regex,假设我有一根像 $res = "there are many restaurants in the city. Restaurants like xyz,abc. one restaurant like....."; 在上面的例子中,我们可以在3个地方找到餐厅。我需要计数为3 $pattern = '/Restaurant/'; preg_match($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE); print_r($matc

假设我有一根像

$res = "there are many restaurants in the city. Restaurants like xyz,abc. one restaurant like.....";
在上面的例子中,我们可以在3个地方找到
餐厅
。我需要计数为
3

$pattern = '/Restaurant/';
preg_match($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
还有一个问题 这与上述问题有关。i、 例如,我有类似于
食品和饮料
的文本。我需要将这个词与
食品
饮料
海鲜
匹配。。。谁能帮我弄到这个。提前谢谢

修饰符用于不区分大小写的匹配。量词使前面的标记可选匹配,在这种情况下,前面的
s
为零或一次

您正在使用
preg_match()
想要获得所有匹配项,您需要


请参见

您可以使用如下正则表达式:

$pattern = '/restaurants?/i';
我对原始正则表达式做了两个更改:

  • 添加
    i
    修饰符-这是不区分大小写的标志
  • s?
    添加到搜索字符串的末尾。这使得最后一个
    s
    字符是可选的。它与
    s
    的零次或一次发生相匹配
  • 请注意,因为我们使用的是不区分大小写的标志,所以此正则表达式还将匹配以下内容:

    • 餐馆
    • 餐馆
    • 餐馆
      • 我建议看一看a——这是一个非常简单的请求

        regex中的
        |
        表示或,
        表示以前的字符或组的0或1,因此以下模式适用于您的规范:

        $pattern = '/[Rr]estaurants?/
        


        使用修饰语
        i
        ,即
        /restaurant[s]{0,1}/i
        您的帖子中存在一些矛盾。。。是否希望整个匹配不区分大小写?还是只有第一个字母?还有,单词中的最后一个
        s
        呢?这是可选的吗?如果我有一个字符串,比如$res=“城市里有餐馆,比如xyz,abc”;我怎样才能找到所有与餐厅相匹配的单词。我可以得到匹配图案的计数。\@Gireesh-是。。但是像餐厅这样的字符串呢?这也应该匹配吗?是的,我已经编辑了我的问题。请检查onceAlso是否需要将餐厅与“餐厅”区分开来。请帮我做一件比水果还甜的事。谢谢你,我有一些小问题,与上述问题有关。i、 例如,我有像“食物和饮料”这样的文字。我需要把这个词和食物、饮料或海鲜搭配起来。。。谁能帮我弄到这个。先谢谢你。。新问题。Plz帮助me@Lix请检查它不应该区分大小写。只有第一个字符不敏感。@Pescis-这不是OP特别说明的。虽然你可能是对的。。。让我们清楚地说明只有四个大写字母,而只有第一个字母可以是大写字母。好吧,它适用于所有这些,甚至更多,为什么不呢。@Pescis-不。。。实际的报价是
        “…像餐馆或餐馆之类的案例…”
        。我的理解是,这是一个示例列表,而不是所有可能选项的列表…@Pescis-看起来我是正确的-看到OP的评论回复错误,您的正则表达式将只匹配
        餐厅中的
        R
        。应该先用你发布链接的工具测试一下…@Havelock我肯定是想让R的人加入一个团队。隐藏直到,最好使用
        []
        而不是
        ()
        ;-)这也将匹配RestaurantQ
        这也将匹配'Restauran'和'RestaurantTTTTTTTTTTTTTTTT'。甚至不是“餐厅”。我需要匹配餐厅,从
        restaurantrrr
        aaaaarestarurantrrr
        。它在所有情况下都应该与单词匹配,例如,它也会与餐厅匹配<代码>*表示前一个组(或字符)无限到0次。你想要的是其他答案的答案,
        ,意思是1到0次。
        $pattern = '/[Rr]estaurants?/
        
          As a solution to your problem please try executing following code snippet
        
          $url = "http://www.examplesite.com/";
          $curl = new Curl();
          $res = $curl->get($url);
          $pattern = '/Restaurant(s)*/i';
          preg_match($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE);
          print_r($matches);