文字列があると言う
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つの正規表現置換を使用してそれを行うことは可能ですか?
交換:
(^|\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:先読みを使用するように正規表現を修正しました。