2013-05-28 175 views
0

我有一個文件,我想用正則表達式改變它裏面的文本。正則表達式來改變大括號之間的字符串

"code": { 
    "restore": 1, 
    "restore_on_startup": true, 
}, 

我想改變

"code": {

},

我想是這樣

Regex.Replace(subject, @"?xxx.*?yyy", "Replace");

之間的文本

但是,由於我的文本包含新行,它沒有工作。

+9

正則表達式是錯誤的工具。使用JSON解析器。 –

+0

你能指導我解析Json嗎? Json解析器和關於我的問題的示例教程將非常棒。 – digiogi

回答

1

此正則表達式應該爲你的seample工作,它將取代括號

內的一切
Regex.Replace(subject,"(?<=\"code\":\\s{).*?(?=},)", "replace", RegexOptions.Singleline); 

「代碼」:{ 「恢復」:1, 「restore_on_startup」:真, },

將產生

「代碼」:{取代},

正則表達式基本上是說匹配所有前綴爲"code": {,後綴爲},然後用我的替換。您可能需要調整它以適應您的需求。

+0

它正在工作。感謝您的幫助。我可以問一下RegexOptions.Singleline的功能嗎?爲什麼不MultiLine? – digiogi

+1

@digiogi Multiline適用於希望用'^'和'$'來匹配每一行,而Singleline則使''。匹配所有內容,包括換行符,請參閱此鏈接瞭解更多信息,http://msdn.microsoft.com/ en-us/library/yd1hzczs.aspx – Jason

+0

我對此非常清楚。而'\\ s'呢?我不明白正則表達式,並想學習它。 – digiogi

0

我建議你一行一行地搜索"code": {

發現,從同一行開始尋找}。直到找到}(當心第一行code部分照顧,因爲有可能是code}

轉到存儲與List<string> Add所有行。

之後,連接你在單個字符串中找到的所有行,進行替換。 從文件中刪除所有這些行並添加新形成的字符串。

+0

感謝您的提示。如果我無法使用Json解析器,我會嘗試這個。 – digiogi

1

使用

(.|\\r|\\n)*? 

,而不是

.*? 

,或者使用多屬性的RegexOptions類

相關問題