正则表达式模式只匹配不包含空格PHP的字符串

时间:2010-06-03 04:05:26

标签: php regex

我想匹配变量中包含的单词/模式,但只匹配没有空格的单词。请提出建议。

  

$ var ='look';

     

$ array =('look','greatlook',   'lookgreat','看起来很棒','看不见',   '看起来不好','看','看');

匹配单词:look,greatlook,lookgreat,badlook

非匹配:看起来很棒,看起来很糟糕,看起来(尾随空格),(空间)看起来。

以下函数的语法没问题,但它匹配所有内容

  

$ match = preg_grep(“/ $ var /”,$ array);

     

$ match = preg_grep(“/ ^ $ var /”,   $阵列); (在开头匹配单词'look')

但是当我包含[^ \ s]时,它会出错

$ match = preg_grep(“/ $ var [^ \ s] /”,$ array);

解析错误:语法错误,意外'^',期待T_STRING或T_VARIABLE

TIA

3 个答案:

答案 0 :(得分:1)

正则表达式为^(?=.*look)[^\s]+$

preg_match("/^(?=.*{$var})[^\\s]+$/", $str);

<?
  $str = array('look', 'greatlook', 'lookgreat', 'look great', 'badlook', 'look bad', 'look ', ' look');
  $var = "look";
  $matches = preg_grep("/^(?=.*{$var})[^\\s]+$/", $str);
  print_r ($matches);
?>
//output
Array
(
    [0] => look
    [1] => greatlook
    [2] => lookgreat
    [4] => badlook
)

答案 1 :(得分:0)

使用:

$match = preg_grep("/^\S*$var\S*$/", $array);

答案 2 :(得分:-1)

$match = preg_grep ("/{$var}[^\s]/", $array);

我认为您需要将变量括在花括号中,因为字符在没有空格的情况下继续。