Php 如何将特定字符串与preg_match匹配?

Php 如何将特定字符串与preg_match匹配?,php,regex,Php,Regex,我想在字符串“$str=slianka Under-19s 235/5*v India Under-19s 503/7”中匹配以下模式India。它应该返回false,因为不是印度,而是存在印度19岁以下儿童?如果只有India存在,且未满19岁,如何使用regex执行此操作。请帮忙 仅当存在india时,它才应匹配;如果存在india under-19时,它应失败 我已经为此编写了以下代码,但它总是匹配的- $str="Sri Lanka Under-19s 235/5 * v India U

我想在字符串
“$str=slianka Under-19s 235/5*v India Under-19s 503/7”中匹配以下模式
India
。它应该返回false,因为不是
印度
,而是存在
印度19岁以下儿童
?如果只有
India
存在,且未满19岁,如何使用regex执行此操作。请帮忙

仅当存在
india
时,它才应匹配;如果存在
india under-19
时,它应失败

我已经为此编写了以下代码,但它总是匹配的-

$str="Sri Lanka Under-19s 235/5 * v India Under-19s 503/7";
$team="#India\s(?!("Under-19s"))#";
preg_match($team,$str,$matches);
我的解决方案:

$text = "Sri Lanka Under-19s 235/5 * v India Under-19s 503/7";

$check = explode(" ", strstr($text, "India"));
if( $check[1] == "Under-19s" ){
    // If is in text
}else{
    // If not
}
我的解决方案:

$text = "Sri Lanka Under-19s 235/5 * v India Under-19s 503/7";

$check = explode(" ", strstr($text, "India"));
if( $check[1] == "Under-19s" ){
    // If is in text
}else{
    // If not
}

匹配regexp中缺少的字符串有点难看。这更清楚一点:

$india_regexp = '/india/i';
$under19_regexp = '/under-19s/i';
$match = preg_match(india_regexp, $str) && ! preg_match(under19_regexp, $str);

匹配regexp中缺少的字符串有点难看。这更清楚一点:

$india_regexp = '/india/i';
$under19_regexp = '/under-19s/i';
$match = preg_match(india_regexp, $str) && ! preg_match(under19_regexp, $str);

这符合您的要求:

<?php

 $str="Sri Lanka Under-19s 235/5 * v India Under-19s 503/7";
 $team="/India\s(?!Under-19s)/";
 preg_match($team,$str,$matches);

 exit;

 ?>

这会满足您的要求:

<?php

 $str="Sri Lanka Under-19s 235/5 * v India Under-19s 503/7";
 $team="/India\s(?!Under-19s)/";
 preg_match($team,$str,$matches);

 exit;

 ?>

假设在印度和19岁以下的正则表达式之间有一个空格来检查是否存在这种情况,则可能是错误的

/India\s(?!Under)/
把所有的都放在代码中

$string = "Sri Lanka Under-19s 235/5 * v India  Under-19s 503/7";
$pattern="/India\s(?!Under)/";
preg_match($pattern,$string,$match);
  if(count($match)==0){
       //What we need
  }else{
       //Under-19 is present
  }

假设在India和Under-19s正则表达式之间有一个空格来检查是否存在这种情况,这将是一个错误

/India\s(?!Under)/
把所有的都放在代码中

$string = "Sri Lanka Under-19s 235/5 * v India  Under-19s 503/7";
$pattern="/India\s(?!Under)/";
preg_match($pattern,$string,$match);
  if(count($match)==0){
       //What we need
  }else{
       //Under-19 is present
  }