Php regexp";仅删除一个带字符的单词";从字符串
我有一个字符串,“你好,我有个问题” 我想从这个字符串中删除所有一个字符的单词。一定是“你好,我有问题” 我已经做到了:Php regexp";仅删除一个带字符的单词";从字符串,php,regex,Php,Regex,我有一个字符串,“你好,我有个问题” 我想从这个字符串中删除所有一个字符的单词。一定是“你好,我有问题” 我已经做到了: $yt_tags = preg_replace('/[\w]{1}/','',$yt_tags); 但它会删除字符串中的所有内容 谢谢你的帮助 使用单词边界(\b): 我在\s*中添加了“修剪”不必要的额外空白(wordaword否则会变成:wordword而不是wordword)。可能更快,但可能更复杂一些: $words = explode(' ', $input_st
$yt_tags = preg_replace('/[\w]{1}/','',$yt_tags);
但它会删除字符串中的所有内容
谢谢你的帮助 使用单词边界(\b
):
我在
\s*
中添加了“修剪”不必要的额外空白(wordaword
否则会变成:wordword
而不是wordword
)。可能更快,但可能更复杂一些:
$words = explode(' ', $input_string);
foreach($words as &$w)
{
if(strlen($w) === 1)
{
unset($w);
}
}
注意:假设每个单词之间只有一个字符间隔,情况可能并非如此。如果您知道这是不同的,例如它来自表单,请使用正则表达式。简短回答,您应该使用
\b\w\b
正则表达式
[\w]{1}
匹配任何单词字符(字母、数字或下划线),但您希望在单词边界中获得匹配项。这是完全不同的事情
我们的测试字符串:您好,有问题
你犯了什么错?
\w{1}
在任何地方查找任何单个单词字符:he
l l l l e r e h a v e u e s t n
\w{2}
按顺序查找单词字符对:
他会在
上找到那些奇数长度的单词
错过了最后一个字母(Hello-->他将
)
\w{3}
在任何地方查找单词字符三元组:
Hel hav que sti
等等
我们需要什么?
\b..\b
在单词边界中查找匹配项
\w
查找单词字符
(数字、字母或下划线)
\b\w\b
查找一个长度的单词。这就是我们需要的
嗯
$words = explode(' ', $input_string);
foreach($words as &$w)
{
if(strlen($w) === 1)
{
unset($w);
}
}