如何使用正则表达式在字符串中准确查找单词或字符串?

时间:2019-06-16 16:52:58

标签: php regex

我正在使用正则表达式在字符串中查找一个或多个单词。 例如:

if(preg_match("~\bbet\b~",$text) !== false)  // want to find "bet" in string

我想检查该字符串($ text)中是否有 bet

但是,如果$ text =“此字符串和该字符串之间存在差异”,它将返回true。

现在,我想要,例如,这些将返回true:

  

$ text =“我敢打赌他是处女!”

     

$ text =“打赌,您很高兴自己飞到了那里。”

但这句话将返回false

  

$ text =“此字符串与该字符串之间存在差异”

或者为硬字符串添加另外1个示例:

我想在字符串中找到“ hi ” 但不是

中的

如果

,它将返回true。
  

$ text =“ hi”;

但如果

,则返回false
  

$ text =“ this”;

1 个答案:

答案 0 :(得分:0)

为了使bet返回true,我们可以使用带有单词边界和i标志的前瞻,其表达式类似于:

.*(?=\bbet\b).*

Demo 1

$re = '/.*(?=\bbet\b).*/mi';
$str = 'I bet he\'s a virgin!
Bet you\'re glad you flew out there.
I betty he\'s a virgin!
Betty you\'re glad you flew out there.';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);

我们可以类似地检查hithis

.*(?=\bhi\b).*

Demo 2

测试2

$re = '/.*(?=\bhi\b).*/mi';
$str = 'there is difference between this string and that string
hi there, is difference between that string and other string false?

';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);