Regex与多行记录匹配

本文关键字:记录 Regex | 更新日期: 2023-09-27 18:13:02

ID:P1
标题:飞利浦32PFL4355
描述:体验电影与最先进的电影飞利浦的Edge LED电视。十亿种显示颜色和隐形扬声器系统确保你们始终是每个场景的一部分
类别:LED电视,飞利浦LED电视
品牌:飞利浦
MRP:35890


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

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

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

Regex与多行记录匹配

使用.NET版本的RegEx,这应该会让您接近:

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

当然,把线连在一起。

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

第2行匹配记录中可以位于查找到的关键字之前的部分。任何字符都可以出现,但'n后面不应该跟'r(因为这将指示记录的结束(。问号确保搜索不贪婪。

第3行匹配您的关键字。

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

第5行确定了您希望在第4行结束后找到的内容——换行符或字符串结束。