仅在字符正则表达式之前匹配 space 并将 space 替换为破折号
matching space only before character regex and replacing space with dash
我想要的是用破折号 -
替换 space 但前提是 space 后面有一个字符。原因是我有一个字符串数组,其中一些在最后一个单词或字符之后插入了 spaces。 (这是我无法控制的)。
例如
在下面的示例中,我使用 %20 来显示 space 的位置
string1 = farmer%20jones
string2 = farmer%20jim%20
我有以下正则表达式 preg_replace('/\s./', '-', $string);
我想我已经完成了一半,但是上面的搜索是在字符前面搜索 space 并将其替换为 -
我用上面的正则表达式得到的是
string1 = farmer-jones
string2 = farmer-jim-
我想要的是:
string1 = farmer-jones
string2 = farmer-jim
我不想添加尾随 -
。
非常感谢任何帮助
你可以在这里使用否定前瞻:
$repl = preg_replace('/\h+(?!$)/', '-', $string);
\h+
将匹配 1 个或多个水平空格。
(?!$)
将断言下一个位置不是行尾。
我想要的是用破折号 -
替换 space 但前提是 space 后面有一个字符。原因是我有一个字符串数组,其中一些在最后一个单词或字符之后插入了 spaces。 (这是我无法控制的)。
例如
在下面的示例中,我使用 %20 来显示 space 的位置
string1 = farmer%20jones
string2 = farmer%20jim%20
我有以下正则表达式 preg_replace('/\s./', '-', $string);
我想我已经完成了一半,但是上面的搜索是在字符前面搜索 space 并将其替换为 -
我用上面的正则表达式得到的是
string1 = farmer-jones
string2 = farmer-jim-
我想要的是:
string1 = farmer-jones
string2 = farmer-jim
我不想添加尾随 -
。
非常感谢任何帮助
你可以在这里使用否定前瞻:
$repl = preg_replace('/\h+(?!$)/', '-', $string);
\h+
将匹配 1 个或多个水平空格。(?!$)
将断言下一个位置不是行尾。