2013-10-11 89 views
1

假設我有這個字符串:Regex-替換x {N},其中x {N-2}

var inputStr="AAAA AAAAAAAA AAA AAAAA"; 

(這裏的asumption是我不知道的每一個「A的大小.. 。」字符串中的順序)

我需要一個簡單的方法來減少2 'A' 字從每一個 「A ......」 序列中的字符串

財產以後這樣的:

var result=Regex.Replace(inputStr,...); 

使這個例子的結果將是:"AA AAAAAA A AAA"

感謝...

UPDATE:

感謝所有的答覆,

我想使這個問題更一般。

例子2:

var inputStr="bbbAAAAC1AAAAAAAA AAA AAAAArrr"

,其結果應該是:

"bbbAAC1AAAAAA A AAArrr"

+1

因爲每次你必須減少2一在每一次出現 – Anand

回答

2

嘗試:

var result = Regex.Replace(inputStr, "(A*)AA", "$1"); 
5
var result=Regex.Replace(inputStr,@"(A*)A{2}(?!A)","$1"); 
+1

一次打我給它(這很有趣,我一直在努力,但忘了使用一個字符串字面量,無法得到測試工作。 ;-) –

+0

你不需要捕捉任何東西。 –

+0

@CasimiretHippolyte是的..也許可以......但我想不出任何這樣的解決方案......你可以發佈它作爲答案或評論 – Anirudha

0

雖然不是一個正則表達式,但它會工作

String.Join(" ", inputStr.Split().Select(x => x.Substring(0, x.Length - 2)).ToArray()); 
+0

您是否指'Substring'? – Default

+0

是的,我正在檢查現在的語法 – Anand

+0

fwiw,不帶字符的'.Split'自動默認爲空白字符(與Char.IsWhiteSpace相匹配的字符)。 –

0

用正則表達式,雖然你不真的需要它。 (?i)確保它檢查所有情況下的a。