所以我想寫一個正則表達式來過濾特定片段的文本文件(尋找速度而不是蠻力)。另一個MultiLine組正則表達式查詢
我想從每場比賽得到三樣東西:
- 一個關鍵標識片斷
- 可選語言格式化的每個片段中
- 的值代表所有起始和結束標籤之間的行
這是正則表達式(一個失敗的測試工具可以在這裏找到 - https://gist.github.com/shiftkey/5236161):
(?s)code start (?<key>[A-Za-z-]*) (?<language>[A-Za-z]*).*[\n](?<value>.*?)[\n].*end code (?<key>[A-Za-z-]*)
使用這些選項:RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.Multiline
。
所以像這樣的文件:
// code start foo csharp
var x = 1;
// end code foo
給我的預期值:
- 關鍵:富
- 語言:csharp的
- 值:
var x = 1;
但是,當我介紹一個片段與第二排我只得到了最後一排:
// code start foo csharp
var x = 1;
var y = 2;
// end code foo
- 關鍵:富
- 語言:csharp的
- 值:
var y = 2;
而不是
- 值:
var x = 1;\r\nvar y = 2;
(或類似)
有什麼我錯過了獲得羣體覆蓋多行?
我看過在SO上提出的類似場景,但他們沒有用於我的用法。
使用單線,而不是多到「」匹配「\ n」? http://stackoverflow.com/questions/289440/cannot-get-regular-expression-work-correctly-with-multiline – Lanorkin 2013-03-25 10:38:40
我想解析任何類型的文本文件 - 不只是XML。我可以用C#或紅寶石或任何有意見的語言來做樣本... – 2013-03-25 10:38:55