可能重复:
正则表达式:匹配除了所有单词
我需要你在PHP中使用正则表达式来否定一个选择帮助。 所以我有一个这样的字符串:“你好,我的名字是汤姆”
我需要做的就是从这个字符串巫删除一切都没有“汤姆”和“杰克”或“亚历克斯”,所以我尝试:
$MyString = "Hello my name is tom"
print_r(preg_replace('#^tom|^jack|^alex#i', '', $MyString));
但它不工作...
你能帮助我吗? 谢谢
可能重复:
正则表达式:匹配除了所有单词
我需要你在PHP中使用正则表达式来否定一个选择帮助。 所以我有一个这样的字符串:“你好,我的名字是汤姆”
我需要做的就是从这个字符串巫删除一切都没有“汤姆”和“杰克”或“亚历克斯”,所以我尝试:
$MyString = "Hello my name is tom"
print_r(preg_replace('#^tom|^jack|^alex#i', '', $MyString));
但它不工作...
你能帮助我吗? 谢谢
如果你想删除的东西之外的一切,可它做得更好周围的其他方法:只捕捉的东西吗? 例如...
$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
什么你试图做的是使用字符类语法([ ^s]
将匹配任何字符,但S)。 但是,这并不具有一系列字符的工作,有没有这样的事情“字类”。 )
如果你想删除的一切,是不是 “汤姆”和“杰克”或“亚历克斯”您可以使用以下命令:
$MyString = "Hello my name is jack";
print_r(preg_replace('#.*(tom|jack|alex)#i', '$1', $MyString));
这将替换整个字符串只用一致的姓名。
正则表达式:
\b(?!tom|jack|alex)[^\s]+\b
你可以匹配你想要什么,然后重建字符串:
$s = 'hello my name is tom, jack and alex';
if (preg_match_all('/(?:tom|jack|alex)/', $s, $matches)) {
print_r($matches);
$s = join('', $matches[0]);
} else {
$s = '';
}
echo $s;
输出:
tomjackalex