用不间断空格替换多个空格
replace multiple spaces by non breaking spaces
当超过一个 space 时,如何用
替换除第一个(白色)space 之外的所有内容?
特别要求与 php 的 preg_replace
一起使用,所以 PCRE。
"This is my text."
应该转换成
"This is my text."
不止一个space是>=2
<?php
echo preg_replace("!\s{2,}!", " ", "Welcome to stack overflow");
输出:
Welcome to stack overflow
您需要做的是像这样使用 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 - 提供了很好的解释:)
看来您只需要替换前面有另一个空白符号的每个空白即可。使用基于回顾的方法:
(?<=\s)\s
参见regex demo。
(?<=\s)
是一个正向回顾,它要求在当前位置之前立即出现一个空格,但空格不会被消耗,因此不会被替换.
下面是PHP demo:
$s = "This is my text.";
echo preg_replace('~(?<=\s)\s~', ' ', $s);
// => This is my text.
当超过一个 space 时,如何用
替换除第一个(白色)space 之外的所有内容?
特别要求与 php 的 preg_replace
一起使用,所以 PCRE。
"This is my text."
应该转换成
"This is my text."
不止一个space是>=2
<?php
echo preg_replace("!\s{2,}!", " ", "Welcome to stack overflow");
输出:
Welcome to stack overflow
您需要做的是像这样使用 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 - 提供了很好的解释:)
看来您只需要替换前面有另一个空白符号的每个空白即可。使用基于回顾的方法:
(?<=\s)\s
参见regex demo。
(?<=\s)
是一个正向回顾,它要求在当前位置之前立即出现一个空格,但空格不会被消耗,因此不会被替换.
下面是PHP demo:
$s = "This is my text.";
echo preg_replace('~(?<=\s)\s~', ' ', $s);
// => This is my text.