Ожидается соответствие регулярного выражения, но не соответствует - PullRequest
1 голос
/ 08 мая 2020

Учитывая эту строку ; значений с разделителями


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

, я хочу получить полные строки, у которых 2nd. столбец не b или d, и удалите совпадающие строки, например,

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

См. демонстрацию

Второй столбец строки 13 - не b или d. Тем не менее, он не совпадает и отображается в поле замены.

Строка 11 имеет ту же строку, и она совпадает.

Любая помощь приветствуется

1 Ответ

2 голосов
/ 08 мая 2020

Это потому, что вы ищете новую последовательность строк \R, которая не существует в конце последней строки.

, используя одну из следующих строк, можно решить проблему:

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

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

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

What Chnaged?

\R* будет соответствовать нулю ИЛИ большему количеству новых последовательностей строк

\R{0,1} будет соответствовать нулю ИЛИ одна новая последовательность строк

(\R|$) будет соответствовать новой последовательности строк ИЛИ конец строки

...