用空格替换连字符,但不应替换空格连字符空格


Replacing hyphen with space, but space hyphen space should not be replaced

我们可以用空格替换所有连字符吗?但如果空格后面跟着hypen,然后是另一个空格,则不应删除它,例如,如果我得到"to be or not-to be",则输出应为"to be或not-to to be"。是否可能

这也可以(演示)

echo preg_replace('('b-'b)', ' ', 'to-be-or-not - to be');

'b匹配单词边界。请注意,如果您还需要在字符串的开头或结尾匹配破折号,这将不起作用,例如-foo-bar-将是-foo bar-

假设$input是您的输入字符串,请尝试以下操作:

$output = preg_replace('/([^ ])-([^ ])/', '''1 ''2', $input);
echo $output; 

正则表达式表示一个非空格字符[^ ],后面跟一个连字符,后面跟另一个非空间字符,替换模式表示第一个与''1匹配的非空格字符,后面跟着一个空格,后面跟第二个与''2匹配的非空间字符

您需要正则表达式/(?! )-(?! )/