所以我想写一个正则表达式来过滤特定片段的文本文件(寻找速度而不是蛮力)。另一个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