2017-05-13 7 views
1

重複文字 'a'を2回使用して 'b'を 'c'に置き換える方法はありますか?例えば :ルビーの正規表現で文字を置き換える方法

ab => ab 
aab => aac 
aaab => aaab 
aaaab => aaaac 
aaaabaaabaab => aaacaabaac 
+0

最後の例では、文字の数に一致しない –

+1

(?) @SebastiánPalma:私はそれがだと思いますOPの代理人のためのタイプミス。 – Rahul

答えて

3

あなたはb続いaaのグループをチェックし、それに応じてキャプチャグループを交換する必要があります。

正規表現:(?<!a)((?:a{2})+)b

説明:aを番号奇数の存在について

(?<!a)チェックします。もし存在すれば、全体のマッチは失敗する。

((?:a{2})+)baの偶数をキャプチャし、続いてbとなります。外部グループは捕捉され、\1と番号が付けられます。

置き換え:\1c、つまり最初に取り込まれたグループ、次にcが続きます。

テスト文字列:交換後

ab 
aab 
aaab 
aaaab 
aaaabaaabaab 

ab 
aac 
aaab 
aaaac 
aaaacaaabaac 

Regex101 Demo

関連する問題