1

我想匹配India字符串中的以下模式"$str=Sri Lanka Under-19s 235/5 * v India Under-19s 503/7 "。它应该返回 false 因为不是India,India Under-19s存在?如果仅India在 19 岁以下的情况下存在,如何使用正则表达式执行此操作。请帮忙。

仅当存在时才应匹配,如果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);
4

4 回答 4

2

这可以满足您的要求:

<?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;

 ?>
于 2013-07-25T20:04:56.500 回答
1

我的解决方案:

$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
}
于 2013-07-25T20:00:17.660 回答
1

匹配正则表达式中缺少的字符串有点难看。这更清楚一点:

$india_regexp = '/india/i';
$under19_regexp = '/under-19s/i';
$match = preg_match(india_regexp, $str) && ! preg_match(under19_regexp, $str);
于 2013-07-25T20:04:31.627 回答
1

假设 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
  }
于 2013-07-25T20:07:43.443 回答