2

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

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

我试过这个没有成功。 正则表达式在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 函数

任何帮助深表感谢。提前致谢。

4

2 回答 2

6

您可以替换:\s*:<pretend this is a space>

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

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

于 2013-05-11T04:24:11.370 回答
1

这是在 VIM 中发出的两个替换命令:

 %s/:/:<space>/g

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

当然,这是矫枉过正,即要发出的命令数量是两个,而不是一个。

这是二合一命令:

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

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

另一种解决搜索空间不可打印性的方法:

:%s/:\s*/:<space>/g
于 2013-05-11T04:36:11.620 回答