Найти / заменить регулярное выражение, чтобы изменить порядок текста в Notepad ++ - PullRequest
1 голос
/ 05 ноября 2019

У меня есть определенные данные, которые я хочу переставить (все они в одной строке) Я пробовал несколько подходов, но не могу заставить их работать.

Вот пример текста:

DATA1="8DE" DATA2="322" DATA3="20" DATA4="19.99" DATA5="0.01"
DATA1="FE4" DATA2="222" DATA4="400" DATA3="400" DATA5="0.00"
DATA1="CE3" DATA2="444" DATA4="60" DATA5="0.00" DATA3="60"
DATA1="MME" DATA3="20" DATA4="20" DATA5="0.00"
DATA2="667" DATA4="30" DATA3="30" DATA5="0.00" DATA1="MH4"

Это должен быть вывод:

8DE     322     20      19.99   0.01
FE4     222     400     400     0.00
CE3     444     60      60      0.00
MME             20      20      0.00
MH4     667     30      30      0.00

Я пробовал следующее, но безрезультатно:

НАЙТИ: DATA1=\"(.*?)\"|DATA2=\"(.*?)\"|DATA3=\"(.*?)\"|DATA4=\"(.*?)\"|DATA5=\"(.*?)\"

ЗАМЕНА: \1 \2 \3 \4 \5

и

НАЙТИ: DATA1=\"(?<d1>.*?)\"|DATA2=\"(?<d2>.*?)\"|DATA3=\"(?<d3>.*?)\"|DATA4=\"(?<d4>.*?)\"|DATA5=\"(?<d5>.*?)\"

ЗАМЕНА: $+{d1} $+{d2} $+{d3} $+{d4} $+{d5}

Я был бы рад, если кто-то может помочь или направитьмне правильный ответ (и прошу прощения за любое недопонимание, так как английский не мой первый язык)

1 Ответ

2 голосов
/ 05 ноября 2019

Регулярное выражение

^(?=.*\bDATA1="([^"]+)"\h*)?(?=.*\bDATA2="([^"]+)"\h*)?(?=.*\bDATA3="([^"]+)"\h*)?(?=.*\bDATA4="([^"]+)"\h*)?(?=.*\bDATA5="([^"]+)"\h*)?.*

Это регулярное выражение работает с использованием необязательных указателей для поиска DATAx (где x - число) и захвата значения внутри " в группу захвата, затемсоответствие всей строке (для ее замены).

Замена

$1\t\t$2\t\t$3\t\t$4\t\t$5

Эта замена просто ссылается на группы захвата и добавляет символы табуляции между ними, переупорядочивая их в порядке DATA [1,2,3,4,5].

Результат

8DE     322     20      19.99       0.01
FE4     222     400     400     0.00
CE3     444     60      60      0.00
MME             20      20      0.00
MH4     667     30      30      0.00

Посмотрите, как это работает

Смотрите здесь используемое регулярное выражение

...