当多个空格时,如何用
替换除第一个(白色)空格以外的所有空格?
特别要求与php preg_replace
一起使用,所以PCRE。
"This is my text."
应转换为
"This is my text."
答案 0 :(得分:3)
您似乎只需要替换前面带有另一个空格符号的每个空格。使用基于lookbehind的方法:
(?<=\s)\s
请参阅regex demo。
(?<=\s)
是一个正向后视,它要求在当前位置之前存在空格,但不会消耗空格,因此不会被替换。
以下是PHP demo:
$s = "This is my text.";
echo preg_replace('~(?<=\s)\s~', ' ', $s);
// => This is my text.
答案 1 :(得分:1)
多个空格为>=2
<?php
echo preg_replace("!\s{2,}!", " ", "Welcome to stack overflow");
<强>输出:强>
Welcome to stack overflow
答案 2 :(得分:0)
您需要做的是使用Regex Lookahead & Lookbehind
,如下所示:
像这样:
<?php
echo preg_replace("/\s(?=\s+)|(?<=\s)\s/", " ", "Welcome to stack overflow");
输出
Welcome to stack overflow
在此测试:https://regex101.com/r/DGraSS/1 - 提供良好的解释:)