正则表达式中的边界运算符 PHP 最多出现四次字符
Boundary operator in regex PHP up to four occurrences of the character
<?php
echo preg_replace('/(?<!\pL)(.){1,4}(?!\pL)/','%','Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd....');
?>
怎么办,如果jestem
会有1到4个字符,不输出这个?
((?<!\pL)(?!\pL)){1,4}
我想要这样的结果:
Pamiętam jestem jestem czuweam dfgd....
您可以使用
$s = 'Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd.... Teraz idę do kina. A teraz nie idę.';
echo preg_replace('/(?<!\S)\S{1,4}(?!\S)/u','%', $s);
// => Pamiętam % % % % % jestem jestem % czuweam dfgd.... Teraz % % kina. % teraz % %
图案详情:
(?<!\S)
- 在... 之前必须有一个空白符号或字符串开头
\S{1,4}
- 1 到 4 个非空白字符
(?!\S)
- 在这 1-4 个字符之后,必须有一个空白符号或字符串结尾。
参见PHP demo。
不要忘记 /u
UNICODE 修饰符,因为您正在使用 Unicode 字符串。
<?php
echo preg_replace('/(?<!\pL)(.){1,4}(?!\pL)/','%','Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd....');
?>
怎么办,如果jestem
会有1到4个字符,不输出这个?
((?<!\pL)(?!\pL)){1,4}
我想要这样的结果:
Pamiętam jestem jestem czuweam dfgd....
您可以使用
$s = 'Pamiętam i tak będę z tobą jestem jestem i czuweam dfgd.... Teraz idę do kina. A teraz nie idę.';
echo preg_replace('/(?<!\S)\S{1,4}(?!\S)/u','%', $s);
// => Pamiętam % % % % % jestem jestem % czuweam dfgd.... Teraz % % kina. % teraz % %
图案详情:
(?<!\S)
- 在... 之前必须有一个空白符号或字符串开头
\S{1,4}
- 1 到 4 个非空白字符(?!\S)
- 在这 1-4 个字符之后,必须有一个空白符号或字符串结尾。
参见PHP demo。
不要忘记 /u
UNICODE 修饰符,因为您正在使用 Unicode 字符串。