正则表达式 - 如果具有特定单词且不区分大小写 PHP preg_match_all,则匹配整行

Regex - match whole line if has a specific word and case insensitive with PHP preg_match_all

我有一个简单的正则表达式代码来匹配文本文件中具有特定单词的整行。我使用 PHP 函数 preg_match_all.

这是我的正则表达式模式:

$word= 'world';
$contents = '
this is my WoRld
this is my world
this is my wORLD
this is my home
';
$pattern = "/^.*$word.*$/m";
preg_match_all($pattern, $contents, $matches);

// results will be in $matches[0]

此函数获取完整行,但仅搜索区分大小写的内容,因此它将 return 仅显示文本的第二行。

我希望它匹配所有行(具有任何形式的 "world" 单词)。

我读到了有关使用 /i 的信息,但我不知道如何将它与上面的模式结合使用。

我试过了:

/^.$pattern.\$/m/i

/^.$pattern.\$/m/i

/^.$pattern.\$/i

这个表达式,

(?i)^.*\bworld\b.*$

可能只是 return 那些想要的字符串。

测试

$re = '/(?i)^.*\bworld\b.*$/m';
$str = 'this is my WoRld
this is my world
this is my wORLD
this is my home';

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

var_dump($matches);

输出

array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(16) "this is my WoRld"
  }
  [1]=>
  array(1) {
    [0]=>
    string(16) "this is my world"
  }
  [2]=>
  array(1) {
    [0]=>
    string(16) "this is my wORLD"
  }
}

正则表达式电路

jex.im 可视化正则表达式: