Невозможно заменить некоторые значения в регулярном выражении - PullRequest
0 голосов
/ 01 октября 2019

Это мой ввод:

0,0,0,1
1,023,1230,1,0
,1,0,01-09-2018,1,

Я хочу заменить 0 и 1, длина которых равна 1. Остальные будут такими, как есть.

Я уже пробовал с кодом javascriptто есть разделить все строки с "," в качестве разделителя. Затем проверяем строки длиной 1 и заменяем их согласно логике. Но это утомительный метод, который отнимает много времени. Я хочу, чтобы регулярное выражение могло выполнять замены во всем входном файле.

Я уже пробовал использовать это регулярное выражение: ((0|1)(?<=,))|((0|1)(?=,)). Но вывод неправильный

Вывод будет такой:

N,N,N,Y
Y,023,1230,Y,N
,Y,N,01-09-2018,Y,

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете использовать следующие регулярные выражения с границами запятых слов:

(?<![^,])1(?![^,])
(?<![^,])0(?![^,])

Заменить на соответствующую подстроку.

Они соответствуют 1 или 0 только в том случае, если они заключены в запятые илиначало / конец строковых позиций.

  • (?<![^,]) - отрицательный lookbehind, который соответствует позиции, которой непосредственно не предшествует символ, отличный от ,
  • (?![^,]) - отрицательныйзаглядывание, которое соответствует позиции, за которой сразу не следует символ, отличный от ,.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...