正则表达式匹配多行记录

时间:2011-11-01 05:26:54

标签: c# regex

  

ID:P1
标题:飞利浦32PFL4355
描述:经验   电影与最先进的最薄的电影方式   飞利浦的Edge LED电视。十亿显示颜色和隐形扬声器   系统确保您始终是每个场景的一部分   Catgory:LED电视,飞利浦LED电视品牌:飞利浦
制造商:MRP:35890
  

ID:P2
标题:Philips 40PFL4356
描述:经验   电影与最先进的最薄的电影方式   飞利浦Edge液晶电视。十亿显示颜色和隐形扬声器   系统确保您始终是每个场景的一部分   Catgory:液晶电视,飞利浦液晶电视
品牌:Philips
MRP:55890

上面的示例数据有两条记录(记录可以是多行(每条记录可以是2行或n行))。记录分隔符是两个输入\n\n

我的要求:搜索关键字(即LCD)并使用正则表达式选择整个记录。

1 个答案:

答案 0 :(得分:1)

使用.NET各种RegEx,这可以让你关闭:

(?<=^|\r\n\r\n)
(.|\n(?!\r))*?
LCD
(.|\n(?!\r))*
(?=\r\n\r\n|$)

当然,加入这些界限。

第1行确定您希望立即在字符串的开头或新记录开始处开始匹配。

第2行匹配可以在找到的关键字之前的记录部分。可以出现任何字符,但\n后面不应跟\r(因为这表示记录的结尾)。问号确保搜索不贪婪。

第3行与您的关键字匹配。

第4行匹配从关键字到记录结尾的内容。与关键字之前一样,这可以是记录结尾的任何内容。

第5行确定了您希望在第4行结束后找到的内容 - 双行中断或字符串结尾。