2012-05-01 125 views
0

如果我有兩個詞,如「嘎?ABG」正則表達式「追加」或「替換」每個單詞的第一個字母?

我想,如果他們匹配,除去在第二個單詞的前兩個字符「?a」並取出後的「b」和追加到第一字?

我該怎麼做?請幫忙

string five ="ga ?abg"; 
string T = Regex.Replace(five, "?a", " "); 

但是如何追加第一個「b」?

結果應該是「gab g」。

+0

對不起,您想得到什麼結果? – Ryan

+2

第一個拖延字符? – anonymous

+0

'兩個單詞如「ga?abg」'他們*單詞*? 「單詞」是什麼意思? –

回答

1

我猜你想要這樣的東西,雖然我不使用C#,所以語法可能是錯誤的。 (另外,你的描述是混亂的,所以我可能不會明白你想要的)

Regex.Replace(five, "([^ ]+) \\?a([^ ])", "$1$2") 

其中:

  • 「(...)」 是一個匹配組,而且$ n複製第n個匹配組的內容
  • 「[^]」是指「除的空間中的任何字符
  • ‘[^] +’是指‘一個或多個非空格字符’
  • ‘\?’意思是」一字面問號「,因爲問號在正則表達式中是特殊的
+0

如果第二個單詞的第一個字符以某個pattren開頭,我想將第一個單詞的第一個字符添加到第一個單詞中。其他例子「每aldwa」,如果單詞開始與pattren「al」它將省略「al」,並加上「d」到「per」 - >「perd wa」 – Iman25

+0

輸出是\ 1 \ 2g – Iman25

+0

@看看C#docs,看起來你可能想使用'「$ 1 $ 2」'而不是'「\\ 1 \\ 2」'(這是一種不同於正則表達式的一種實現方式,正如我所說的,我沒有使用C#版本)。 –

0

我認爲你正在尋找的正則表達式是這樣的:

/ \?a./ 

因爲我不知道任何C#,這裏有一個jsfiddle(我一直是簡單的櫃面你不知道任何JS)

+0

謝謝,拿出的前綴,但不是我想要的。 – Iman25

0

任何特殊的原因,這必須是正則表達式?

string answer; 
string[] split = five.Split(' '); 
if (split.Length == 2 && split[0].Length > 0 && split[1].StartsWith("?a") && split[1].Length > 3) 
{ 
    answer = string.Format("{0}{1} {2}", split[0], split[1].Substring(2, 1), split[1].Substring(3)); 
} 
else 
{ 
    answer = five; 
} 

或者,您可以使用MatchEvaluator Delegate,但仍然需要自定義代碼。我不認爲你可以通過簡單的Regex.Replace來完成你的要求。

+0

不,如果有其他方式,它對我來說只是新手而已 – Iman25

相關問題