所以我正在尝试编写一个正则表达式来过滤特定片段的文本文件(寻找速度而不是蛮力)。
我想从每场比赛中得到三件事:
- 识别片段的关键
- 用于格式化每个片段的可选语言
- 表示开始和结束标记之间的所有行的值
这是正则表达式(可以在此处找到失败的测试工具 - 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 上提出的类似场景,但它们对我的使用不起作用。