Удалите блоки текста с помощью начала и конца. - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть файл ввода данных, который выглядит следующим образом:

        Menu: textA
            Resource Id: 59517
            Picture File Name:
            Status Text:
            Menu Item Name:
.data CLASSPROPSSIZE
0000: 2400
.enddata
.data CLASSPROPS
0000: 4F004C0045005F00 4D0045004E005500 5F00470052004F00 550050000000FFFE
0020: 02000000
.enddata
                Resource Id: 45367
                Picture File Name:
                Enabled when:
                Status Text:
                Menu Item Name:
                Menu Item: TextB
.data CLASSPROPSSIZE
0000: 2400
.enddata
.data CLASSPROPS
0000: 4F004C0045005F00 4D0045004E005500 5F00470052004F00 550050000000FFFE
0020: 02000000
.enddata

Мне нужно удалить целые блоки .data и .enddata вместе со строками .data и .enddata.

К сожалению,Я не смог написать регулярное выражение, которое удаляло бы все ненужные блоки данных из входных данных.

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте это регулярное выражение:

\.data(?:(?!\.enddata)[\s\S])*\.enddata

Замените каждое совпадение пустой строкой.

Нажмите для демонстрации

Объяснение:

  • \.data - соответствует .data
  • (?:(?!\.enddata)[\s\S])* - соответствует 0+ вхождений любого символа, который не начинается с .enddata
  • \.enddata - совпадения .enddata

enter image description here

...