正则表达式在冒号后添加空格

时间:2013-05-11 04:22:51

标签: php regex

如果没有空格,我正在尝试在冒号和字符或数字之间添加空格:

this is my sentence:hi it's midnight
this is my sentence:2012 was a good year.
this sentence should be ignored: ignore me

我希望它能读到:

this is my sentence: hi it's midnight
this is my sentence: 2012 was a good year.
this sentence should be ignored: ignore me

我试过这个没有成功。 Regex to insert space in vim

我可以使用它来获取“:X”或“:0”(它与冒号后的空格不匹配,这很好):

:[^\s]

但如果我换成:

: $0

最终结果如下:

this is my sentence: :hi it's midnight
this is my sentence: :2012 was a good year.

我正在使用http://www.gskinner.com/RegExr/来测试模式。

我将使用PHP preg_replace函数

非常感谢任何帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:6)

您只需将:\s*替换为:<pretend this is a space>

即可
preg_replace('/:\s*/', ': ', $text)

:\s*匹配:后跟任意数量的空格(或没有空格)。

答案 1 :(得分:1)

以下是在VIM中发布的两个替换命令:

 %s/:/:<space>/g

 %s/:<space><space>/:<space>/g

当然,这是一种过度杀伤,也就是说,要发出的命令数量是两个,而不是一个。

这是二合一命令:

:%s/:<space>*/:<space>/g

<space>用于使其更清晰,因为按空格键插入的空格不可打印。

另一种解决空间不可印刷性的方法:

:%s/:\s*/:<space>/g