仅在字符正则表达式之前匹配空格并用短划线替换空格

时间:2016-06-09 14:14:14

标签: php regex preg-replace

我所追求的是用短划线替换空格-但是只有当空格后面有一个字符时才这样做。原因是我有一个字符串数组,其中一些字符串在最后的单词或字符后面插入了空格。 (这是我无法控制的)。 例如 在下面的示例中,我使用%20来显示空格的位置 string1 = farmer%20jones string2 = farmer%20jim%20

我有以下正则表达式preg_replace('/\s./', '-', $string);

我想我已经走了一半,但上面搜索了一个字符前面的空格并用-取代了

上面的正则表达式得到的是 string1 = farmer-jones string2 = farmer-jim-

我想要的是: string1 = farmer-jones string2 = farmer-jim

我不希望添加尾随-

任何帮助非常感谢

1 个答案:

答案 0 :(得分:2)

您可以在此处使用否定前瞻:

$repl = preg_replace('/\h+(?!$)/', '-', $string);
  • \h+将匹配1个或多个水平空格。
  • (?!$)将声明下一个位置不是行尾。

RegEx Demo

相关问题