Что нового

RegExp Удаление строк

eam

Чайник
Сообщения
8
Репутация
0
Уважаемые знатоки,
у меня вопрос по регулярным выражениям.

Надо загрузить текстовый файл в переменную и удалить все пустые строки
(для последующей StringSplit). Пустые строки могут быть в середине, до и после текста.
Это делаю в 3 приема:
Код:
; 1. удаляет все пустые строки
$sText = StringRegExpReplace($sText, "(?sm)" & @CRLF & "\s*" & @CRLF, @CRLF)

; 2. удаляет все пустую строки спереди
$sText= StringRegExpReplace($sText, '(^[\v]*)', '')
; или
$sText= StringRegExpReplace($sText, '(^[\v]*)(.*?)', '\2')

; 3. удаляет пустую строки сзади
$sText = StringRegExpReplace($sText, '([\r\n]*$)', '')
; или
$sText = StringRegExpReplace($sText,  '(.*)([\v]*$)', '\1')

; потом
;$aT1 = StringSplit(StringStripCR($sText), @LF)
;_ArrayDisplay($aT1)


Пробовал обьединить хотя бы 2. и 3. в одно выражение, но не получилось
Код:
$sText = StringRegExpReplace($sText,  '^[\v]*(.*?)?[\v]*', '\1') ; удаляет только в начале
$sText = StringRegExpReplace($sText,  '^[\v]*?(.*?)([\r\n])$', '\1') ; не работает
$sText = StringRegExpReplace($sText,  '(^[\v]*?).*?([\r\n])*$', '') ; не работает

Перестает работать, если в строке присутствует знак $ (?)
Хоть и с 3-я строками можно жить, хочется понять, где же ошибка
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 517
Репутация
321
Ну насчет начала и конца, наверное проще будет использовать:
Код:
StringStripWS()
 
Автор
E

eam

Чайник
Сообщения
8
Репутация
0
Все получилось, большое спасибо !
Сообщение автоматически объединено:

Т. о. так удаляются все пустые строки в файле одной командой:
Код:
$sText = StringStripWS(StringRegExpReplace($sText, "(\r\n)*", "\1"), 1+2)
 
Последнее редактирование:
Верх