【问题标题】:matching space only before character regex and replacing space with dash仅在字符正则表达式之前匹配空格并用破折号替换空格
【发布时间】:2016-06-09 22:26:02
【问题描述】:

我想要的是用破折号- 替换空格,但前提是该空格后面有一个字符。原因是我有一个字符串数组,其中一些在最后一个单词或字符之后插入了空格。 (这是我无法控制的)。 例如 在下面的示例中,我使用 %20 来显示空格的位置 string1 = farmer%20jones string2 = farmer%20jim%20

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

我想我已经完成了一半,但上面会搜索字符前的空格并将其替换为 -

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

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

我不希望添加尾随 -

非常感谢任何帮助

【问题讨论】:

  • 这一切都可能在一个正则表达式中,但是在应用当前正则表达式之前修剪你的值也可以解决你的问题......

标签: php regex preg-replace


【解决方案1】:

您可以在此处使用负前瞻:

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

RegEx Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多