【问题标题】:Regex match expected but not matching正则表达式匹配预期但不匹配
【发布时间】:2020-05-08 08:07:49
【问题描述】:

给定这串; 分隔值


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 行有相同的字符串并且匹配。

感谢任何帮助

【问题讨论】:

    标签: regex pcre substitution


    【解决方案1】:

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

    使用以下方法可以解决问题:

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

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

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

    发生了什么变化?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多