2012-11-09 38 views
0

誰能幫我做任何任何字符串的C#中的字符串替換開始「startingChars」,並以「endingChars」結尾......類似的東西:C#替換表達式匹配的開始結束

Regex.Replace(strToReplaceIn, "startingChars[anyNumberOfChars]endingChars", myFunction(anyNumberofChars)); 

其中strStartingChars和strEndingChars是兩個字符串,並myFunction是定義

例如,如果一開始是"Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ...."得到的結果是:"Hello, I need to replace myFunctionResult("WITH_SOMETHING"), ..."

請讓我知道Regex.Replace表達,這將有助於,問題是沒有找到匹配的表達式,但替換...我怎麼可以參考

anyNumberOfChars 

在表達式的替換參數?

我希望這是很清楚...謝謝你

回答

2

您可以使用一組命名很容易地獲得內容替換,並且匹配評估,構建替換字符串:

using System.Text.RegularExpressions; 

static class Program { 
    static void Main(string[] args) { 
     string strToReplaceIn = "Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ...."; 
     string replaced = Regex.Replace(strToReplaceIn, "startingChars(?<contents>.*?)endingChars", (match) => { 
      return "myFunctionResult(" + match.Groups["contents"].Value + ")"; 
     }); 
    } 
} 

named group(在表達式中(?<contents>.*?)位)是第東西在讓你引用表達式的一個子部分,我認爲這是你要求的。
或者,您可以使用一個簡單的組,即括號之間的表達式,而不使用?<name>部分:(.*)。然後,你應該是指它與一個整數值:

match.Groups[1].Value 

(注:組[0]表示整場比賽)

+0

這正是想我需要......非常感謝你,一些備註: '{return「myFunctionResult(」+ match.Groups [「contents」]。Value +「)」; }'成爲我myFunction(match.Groups [「contents」]。Value;' –

+0

@SandraS。很高興它幫助:)乾杯 –

2

您應該使用一個這樣的正則表達式:

abc.*xyz 

它會匹配這樣的字符串:

abcblablablaxyz 

考慮使用最小匹配:

abc.*?xyz 

這隻會匹配到第一個xyz,而不是搜索到最後一個。

0

^yourString &

^- 手段開始你的字符串的
& - 你的字符串的結尾

相關問題