preg_replace 两个箭头 space

preg_replace two arrows with space

我有一个包含“> >”的字符串。我正在尝试用 'test >>>>'.

替换 'test > >'

str_replace 没有替换任何东西,所以我尝试使用:

$string = preg_replace("/[\>\ \>]/",">>>>", $string);

但这会替换字符串中的所有空格以及箭头。

所以字符串的结尾是 'test>>>>>>>>' 而不是 'test >>>>'

/[\>\ \>]/ 正则表达式匹配单个字符,即 >、space 或 > 并且 preg_replace 替换多次出现(默认情况下) .

如果没有具体的上下文要求,可以使用str_replace like

$s = "test > >";
echo str_replace('> >', '>>>>', $s);

PHP demo

如果你只想替换 > > 后面或前面没有 >,你可以尝试

echo preg_replace("/(?<!> )> >(?!\s*>)/",">>>>", $s);

参见 another PHP demo and a regex demo

如果 > 前面有 > 和 space,则 (?<!> ) 后向匹配将失败,而 (?!\s*>) 前向匹配将失败如果这里有 0+ whitespaces 在 > >.

之后跟着 >
$input_lines = "I have a string which has '> >'. I am trying";
echo preg_replace("/(?<!> )> >(?!\s*>)/", "-----", $input_lines);

输出将是: 我有一个字符串,其中包含“----”。我在努力

preg_replace(REG_PATTERN, 替换, INPUT_STRING); return 所需的输出。

它适用于任何具有“> >”的字符串,或者您的字符串中可能有双 space,您可以通过在正则表达式中的 > 和 > 之间增加 space 来替换它. 编码愉快。