2013-08-16 117 views
4

我想解析一個字符串,並獲得大括號{}之間所有包含'!'的單詞。在裏面。
輸入例:
"This is {matchA} and {matchB} but I need {matchC!matchD}, however {matchE} doesn't count but {matchF!matchG} is what I'm looking for"正則表達式匹配由'!'分隔的單詞幷包含在大括號'{''}'

我已經使用(?<=\{)(.*?)(?=\}){(?:\.|(\\{)|[^}'\n])*}讓所有的{}之間的匹配,但它返回以下的匹配:
"matchA""matchB""matchC!matchD""matchE""matchF!matchG"作爲

匹配

但是,我試圖讓只有'!'的比賽在他們中,所以結果應該只有:"matchC!matchD""matchF!matchG",並忽略其餘部分。

我真的很感謝幫助。謝謝大家提前對你的答案

+0

是否需要使用一個正則表達式來完成它?難道你不能通過'.Where(x => x.Value.Contains('!'))''傳遞這些匹配集合嗎? –

回答

4

把感嘆號在那裏,並使用字符類來代替非貪婪。

{([^}]+![^}]+)} 
+0

這工作像一個魅力,謝謝 –

+0

我喜歡貪婪:( –

相關問題