Как я могу получить счетчик группы захвата, а затем заменить символы указанным c символом? - PullRequest
2 голосов
/ 09 января 2020

Как я могу получить счетчик группы захвата и заменить его тем же количеством символов, которое я указал?

Например, вот строка ...

123456789ABCD00001DDD

Мое регулярное выражение с группами захвата выглядит следующим образом ...

^([123456789]{9})([ABCD]{1,4})([0]{1,5})([0-9]{1,5})([D]*)$

Когда я использую что-то вроде Notepad ++, я хочу найти вышеупомянутое и заменить его чем-то вроде ...

\1\2 \4\5

Создание конечных результатов в виде ...

123456789ABCD 1DDD

Пример расположен в https://regex101.com/r/fykEnn/1

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Вы можете использовать это регулярное выражение с \G и положительным прогнозом:

(?:^([1-9]{9}[ABCD]{1,4})(?=0{1,5}\d{1,5}D*$)|\G)0

Демонстрация RegEx

\G утверждает позицию в конце предыдущий матч или начало строки первого матча.

0 голосов
/ 09 января 2020

В bash, используя sed:

$ echo 123456789ABCD00001DDD | sed -re 's/([123456789]{9})([ABCD]{1,4})([0]{1,5})([0-9]{1,5})([D]*)$/\1\2   \4\5 /g'
123456789ABCD   1DDD
...