繁体   English   中英

preg_replace不替换某些匹配的字符串

[英]preg_replace not replacing certain matching strings

我想在字符串中每个单词的前面加上一个+,除非单词以*开头。

这是我将+放在每个单词前面的操作:

$string = "    *these are my words   ";
$trimmed = trim($string);
$pattern = '/ /';
$string2 = preg_replace ($pattern, ' +',$trimmed);

如果该单词带有*,如何避免preg_replace在每个单词前面加上+?

谢谢

您可以尝试以下基于负值的正则表达式。

preg_replace('~(?<!\S)([^*\s])~', '+\1', $str);
  • (?<!\\S)匹配每个单词开头存在的所有边界。 这里的单词表示一个或多个非空格字符。

  • ([^*\\s])匹配匹配的边界旁边存在的单个字符,该字符不能为空格或*符号。

  • 现在,它将匹配的字符替换为+以及第一个捕获的组中存在的字符。

DEMO

要么

preg_replace('~(^|\s)([^*\s])~', '\1+\2', $str);

DEMO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM