PHP 正则表达式 : Remove words less than 3 characters

标签 php regex preg-replace

我正在尝试从字符串中删除所有少于 3 个字符的单词,特别是使用 RegEx。

以下不起作用,因为它正在寻找双空格。我想我可以事先将所有空格转换为双空格,然后再将它们转换回来,但这似乎效率不高。有什么想法吗?

$text='an of and then some an ee halved or or whenever';
$text=preg_replace('@ [a-z]{1,2} @',' ',' '.$text.' ');
echo trim($text);

最佳答案

删除短词

你可以使用这个:

$replaced = preg_replace('~\b[a-z]{1,2}\b\~', '', $yourstring);

the demo ,请参阅底部的替换。

解释

  • \b 是一个单词边界,匹配一侧是字母而另一侧不是字母的位置(例如空格字符,或字符串的开头)
  • [a-z]{1,2} 匹配一个或两个字母
  • \b 另一个词边界
  • 替换为空字符串。

选项 2:同时删除尾随空格

如果你还想去除单词后面的空格,我们可以在正则表达式的末尾添加\s*:

$replaced = preg_replace('~\b[a-z]{1,2}\b\s*~', '', $yourstring);

引用

Word Boundaries

关于PHP 正则表达式 : Remove words less than 3 characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463814/

相关文章:

PHP ereg_replace 允许空格

php - 在php中对带有特殊字符的多维数组进行排序

php - 就地编辑更新文本

php - AJAX 调用成功后更新元素

php - 不同ftp的子域之间的Ajax请求

php - preg_替换引号内的所有换行符

java - : I have a requirement of matching the value request parameter with unicode charcters but it should not allow space 的正则表达式

javascript - JS 正则表达式匹配单词,排除斜杠包围的单词

Python 在字符串中查找正则表达式

php - preg_replace 在 php 中不完全替换