Страницы: 1
RSS
Удаление пустых строк в ячейке при помощи regex, Удаление пустых строк в ячейке при помощи regex
 
Хочу с помощью регулярных выражений убрать пустые строки в выражении. В ней 3 пустые строки: одна в начале, вторая посреди, и третья в конце. Паттерн типа "^[\t ]*\n" не сработал
Изменено: Станислав Мерц - 15.08.2022 21:51:06
 
Башка уже не сильно варит, поэтому получилось только в два захода:
Код
    dim s$,sres$    
    s = Range("A1").Value
    Set ore = CreateObject("vbscript.regexp")
    ore.ignorecase = -1
    ore.MultiLine = -1
    ore.Global = -1
    ore.Pattern = "^[\n\r]+"
    sres = ore.Replace(s, "")
    ore.Pattern = "[\n\r]+$"
    sres = ore.Replace(sres, "")
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
без regexp
Код
Function DelBlancRow(s$)
  Do While Left(s, 1) = vbLf: s = Right(s, Len(s) - 1)
  Loop
  Do While InStr(s, vbLf & vbLf): s = replace(s, vbLf & vbLf, vbLf)
  Loop
  DelBlancRow = s
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Думаю Вам может подойти такой паттерн
Код
\n(?=•|$)
Изменено: Msi2102 - 16.08.2022 09:38:32
 
Ігор Гончаренко, хвостовые забыл)

Удаление ведущих, хвостовых и двойных переносов в строке
Выделить диапазон (одна область) и запустить макрос
Удаление без RegExp. Метод последовательных замен. Можно в разы быстрее

Станислав Мерц, если вам нужен результат и не принципиален метод, то не используйте название метода в названии темы - рискуете получить весьма ограниченные решения или не получить их вообще
Изменено: Jack Famous - 16.08.2022 10:05:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ну если всё-таки принципиально RegExp, то наверное лучше будет так, а то вдруг не все строки будут начинаться с "•" и будет больше одного переноса строки
Код
^\n*|\n*(?=\n.|$)
Изменено: Msi2102 - 16.08.2022 10:19:08
 
Подниму тему, столкнулся что паттерны предложенные выше не работают  
 
не работает для решения какой задачи?
Код
Function func1(s)
  Do While InStr(s, " " & vbLf)
    s = replace(s, " " & vbLf, "")
  Loop
  func1 = s
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх