正则表达式匹配,但不匹配

时间:2020-05-08 08:07:49

标签: regex pcre substitution

给出此字符串;分隔的值


a;; z
toy;d;hh 
toy
;b;;jj
z;
d;23
d;23td
;;io;
b y;b;12
z
a;b;bb;;;34
z

和此正则表达式

^(?!([^\r\n;]*);(?:(b|d))(?:;|$)).*\R

我希望获得第二名的完整记录。列不是bd,并且删除了匹配的行,就像这样

toy;d;hh 
;b;;jj
b y;b;12
a;b;bb;;;34

请参阅demo

第13行的第二列不是bd。仍然不匹配,并显示在替换框中。

第11行具有相同的字符串,并且确实匹配。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

那是因为您要寻找的新行序列\R在最后一行的末尾不存在。

使用以下一项可以解决此问题:

^(?!([^\r\n;]*);(?:(b|d))(?:;|$)).*\R*

^(?!([^\r\n;]*);(?:(b|d))(?:;|$)).*(\R|$)

^(?!([^\r\n;]*);(?:(b|d))(?:;|$)).*\R{0,1}

发生什么变化了?

\R*将匹配零个或更多新行序列

\R{0,1}将匹配零个或一个新行序列

(\R|$)将匹配新的行序列或行尾

相关问题