示例:
姓名: 王五
邮箱: wangwu@example.com
姓名: 张三
电话: 138-1234-5678
姓名: 李四
电话: 13987654321
电话: 13987654123
姓名: 王五
邮箱: wangwu@example.com
过滤包含姓名下面是电话的段落:
^姓名:((?!^姓名).)*?电话((?!^姓名).)*$
结果:
姓名: 张三
电话: 138-1234-5678
姓名: 李四
电话: 13987654321
电话: 13987654123
解析:
((?!^姓名).)*?
((?!^姓名).)*$
.*?非贪婪模式,尽可能少的匹配字符
.*贪婪模式,尽可能多的匹配字符
(?!)否定先行断言,匹配一个位置,这个位置后面不是指定的模式
^姓名:((?!^姓名).)*?电话((?!^姓名).)*$
//匹配“姓名:”开通的字符串,然后尽可能少匹配下一个不是“姓名”的字符,在匹配“电话”,在尽量匹配不是“姓名”的字符直到每行结尾。