如何使用正则表达式删除除某些单词之外的所有内容?

Mus*_*00m 2 php regex preg-replace

可能的重复:
正则表达式:匹配除

我需要您的帮助来在 PHP 中使用正则表达式来否定选择。所以我有一个像这样的字符串:“你好,我的名字是汤姆”

我需要做的是删除这个字符串中的所有内容,女巫不是“tom”或“jack”或“alex”,所以我尝试了:

$MyString = "Hello my name is tom"
print_r(preg_replace('#^tom|^jack|^alex#i', '', $MyString));
Run Code Online (Sandbox Code Playgroud)

但这不起作用...

你能帮我吗?谢谢

rai*_*7ow 5

如果您想删除除某些内容之外的所有内容,也许最好以相反的方式完成:仅捕获某些内容?例如...

$testString = 'Hello my name is tom or jack';
$matches = array();
preg_match_all('/\b(tom|jack|alex)\b/i', $testString, $matches);
$result = implode('', $matches[0]);
echo $result; // tomjack
Run Code Online (Sandbox Code Playgroud)

您尝试做的是使用字符类语法([^s]将匹配除 s 之外的任何字符)。但这不适用于一系列字符,没有“词类”之类的东西。)