0

文字列があると言う

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

パターン「X:Y」に一致するすべての部分文字列を「X:0:Y」に置き換えたいのですが、この例では次のようになります。

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

1つの正規表現置換を使用してそれを行うことは可能ですか?

4

1 に答える 1

3

交換:

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

\1\2:0:\3

^|\s- 空白の行頭 - ワイルド
.カード
:- コロン
.- ワイルドカード
\s|$- 空白または行末は
?=先読みです。それ以外の場合、A:B C:D両方が一致しません。

\1- 最初に角かっこに入れたものに(^|\s)
\2一致する文字列 - - 2 番目に角かっこに入れたものに一致した文字列 - 1st (.)
\3- 角かっこに入れた 3 番目のものに一致した文字列 - 2nd(.)

などの一般的な代替は\1、などです$1

\w例の代わりに (word character) を使用することもでき.ます。

編集:

+質問のタイトルから、1 つまたは複数の ( ) 単語の文字に一致させる必要があるように見えます。

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

編集 2:先読みを使用するように正規表現を修正しました。

ブーストテスト

于 2013-03-27T18:04:25.950 に答える