2013-03-27 38 views
0

說有字符串如何區分AAA:BBB和AAA:BBB:使用正則表達式的CCC?

A:B:C 答:BC:乙 C:d:EC:d:電子:F

我想替換匹配模式「X其中所有子串: Y「到」X:0:Y「,在本例中應該是:

A:B:C A:0:BC:0:B C:D:EC:D:E:F

是否可以使用一個正則表達式替換它?

+2

正則表達式本身沒有替換,爲此給了更多infos:language,platform ... – 2013-03-27 17:58:06

+0

謝謝,我使用boost :: regex。 – camino 2013-03-27 18:14:45

回答

3

替換:

(^|\s)(.):(.)(?=\s|$) 

\1\2:0:\3 

^|\s - 的空白行開始
. - 外卡
: - 結腸
. - 外卡
\s|$ - 白色空格或行末
?=是預測,否則A:B C:D不會匹配。

\1 - 匹配的字符串,放在括號內的第一件事 - (^|\s)
\2 - 匹配的字符串,放在括號中的第二件事情 - 第一(.)
\3 - 匹配的字符串爲你把第三件事括號 - 第二(.)

\1常見的備用等是$1

您還可以使用\w(單詞字符),而不是.

編輯:

從問題的標題,它看起來像你可能要匹配一個或多個(+)字字符:

(^|\s)(\w+):(\w+)(?=\s|$) 

編輯2:固定的正則表達式使用預見。

Boost test

+0

學習正則表達式'\ b' – 2013-03-27 18:10:41

+5

@Sanya_Zol'\ b'匹配':',所以它不能按需要工作。 – Dukeling 2013-03-27 18:12:56

相關問題