鉴于以下输入 -
"I went to 1 ' and didn't see p"
,PHP 的 preg_replace 函数删除所有单个字符(以及剩余的空格)的正则表达式是什么,以便输出为 -
"went to and didn't see".
我一直在寻找解决方案,但找不到。类似的例子没有包括对正则表达式的解释,所以我无法让它们适应我的问题。所以,如果你知道怎么做,请提供正则表达式,但也要分解它,以便我理解它是如何工作的。
干杯
鉴于以下输入 -
"I went to 1 ' and didn't see p"
,PHP 的 preg_replace 函数删除所有单个字符(以及剩余的空格)的正则表达式是什么,以便输出为 -
"went to and didn't see".
我一直在寻找解决方案,但找不到。类似的例子没有包括对正则表达式的解释,所以我无法让它们适应我的问题。所以,如果你知道怎么做,请提供正则表达式,但也要分解它,以便我理解它是如何工作的。
干杯
试试这个:
$output = trim(preg_replace("/(^|\s+)(\S(\s+|$))+/", " ", $input));
(^|\s+)
表示“字符串或空格的开头”(\s+|$)
表示“空格字符串的结尾”\S
是单个非空格字符试试这个正则表达式
'\s+\S\s+' -> ' '
你需要两张通行证
首先是去掉所有单个字符
(?<=^| ).(?=$| ) replace with empty string
第二个是只留下一个空格
[ ]{2,} replace with single space
您最终会得到一个开头或结尾可能有空格的字符串。我会用你的语言来修整这个,而不是用正则表达式来做
例如,第一个正则表达式是用 php 编写的,例如
$result = preg_replace('/(?<=^| ).(?=$| )/sm', '', $subject);
在和的帮助下implode
尝试 explode
array_filter
$str ="I went to 1 ' and didn't see p";
$arr = explode(' ',$str);
function singleWord($var)
{
if(1 !== strlen($var))
return $var;
}
$final = array_filter($arr,'singleWord');
echo implode(' ',$final);
//return "went to and didn't see"(length=19)