powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp: убрать пробелы в начале и конце строк
16 сообщений из 16, страница 1 из 1
RegExp: убрать пробелы в начале и конце строк
    #38823994
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделала так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    Set oRegExp = CreateObject("VBScript.RegExp")
        oRegExp.Global = True
        oRegExp.Multiline = True
        oRegExp.IgnoreCase = True


    txt = "    ptp tpt        " & vbCrLf & vbCrLf _
	    & "     tpt-ptp      " & vbCrLf & vbCrLf _
	    & "   ppp_ttt           " & vbCrLf & vbCrLf _
	    & "         ttt+ppp   "


    Debug.Print txt

    oRegExp.Pattern = "(^\s*)|(\s*?$)"

    Debug.Print oRegExp.Replace(txt, "")


Всё бы хорошо, но удаляет пустую строку. :(
Помогите, как правильно должна выглядеть маска?
ps: И если кому-то не лень, растолкуйте, как работает "?". Да, я читала описания, смотрела примеры, но вот не могу понять, почему в моем случае без этого знака не "работает". Думаю, что в нем загвоздка.
Спасибо.
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824028
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sisirona2000И если кому-то не лень, растолкуйте, как работает "?".Проблема не в нем, а в том, что переносы (\r\n) это тоже \s, а по условию паттерна между наборами \s не обязательно чему-то быть.
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824086
guest123456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sisirona2000,

Вместо \s используй [^\S\n]
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824156
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariySisirona2000И если кому-то не лень, растолкуйте, как работает "?".Проблема не в нем, а в том, что переносы (\r\n) это тоже \s, а по условию паттерна между наборами \s не обязательно чему-то быть.
(И всё же, ставиться перенос между строк один раз почему-то. О_о)
в книгах сказано так:
$ - Если установлено свойство Multiline, определяет также позицию непосредственно перед "\n" (новая строка) и "\r" (возврат каретки).
^ - Определяет начало входной строки. Если установлено свойство Multiline, определяет также позицию сразу после "\n" (новая строка) и "\r" (возврат каретки).
\s - пробельный символ. Эквивалентно [\f\n\r\t\v]

Я где-то заблуждаюсь или обманывают :(
Как я представляю, конструкции обычной строки должны быть\r\n^строка$\r\n. Или точнее \n^строка$\r
Да, \s содержит и \r\n, но ведь они не должны попадать в набор из-за ^ и $?

можно поправить так:
Код: vbnet
1.
oRegExp.Pattern = "(^[^$]+\s*)|(\s*?$)"


мыслю так: Начало строки(^), берем все символы, которые не конец строки ([^$]+ т.е. не \r\n), начинающиеся с только \s*
или
только \s* перед концом строки.(знак вопроса мне не понятен, но без него не работало)

Ведь так? Всё правильно? Но не работает.
Второй день мучусь с этой "логикой". :(( И мне это спасть не даёт, паскуда.


guest123456Sisirona2000,

Вместо \s используй [^\S\n]
Странно, но работает!!! Надо осмыслить это. Закипаю. ) Спасибо большое!
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824186
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже работает:

Код: vbnet
1.
oRegExp.Pattern = "(^ *)|( *?$)"
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824205
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sisirona2000(И всё же, ставиться перенос между строк один раз почему-то. О_о)Потому что строка имеет вид

^ptp tpt \r\n$^\r\n$^[/b] tpt-ptp$

^\r\n$ эквивалентно ^\s\s$, они удаляются. Как-то так.
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824206
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
^ptp tpt \r\n$^\r\n$^ tpt-ptp$
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824266
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy
Код: plaintext
^ptp tpt \r\n$^\r\n$^ tpt-ptp$
Вау! Точно! Спасибо! Чёрт, как я сразу не подумала ( ... блин
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824272
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy
Код: plaintext
^ptp tpt \r\n$^\r\n$^ tpt-ptp$
Вау! Точно! Спасибо! Чёрт, как я сразу не подумала ( ... блин
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824274
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyТак тоже работает:

Код: vbnet
1.
oRegExp.Pattern = "(^ *)|( *?$)"

Потрясающе! Почему? Там же Tab -ы есть.
Блин, ну что за логике ( Я в шоке!
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824319
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sisirona2000Там же Tab -ы есть.Я должен был об этом догадаться?

Код: vbnet
1.
oRegExp.Pattern = "(^[ \t]*)|([ \t]*?$)"
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824353
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariySisirona2000Там же Tab -ы есть.Я должен был об этом догадаться?
А-хахаха! В том то и дело, что работало и без этого! Вы то же не понимаете логики )))
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824354
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пс: без \t
а то, вдруг вы опять не провеерите ))
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824362
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да-да
спасибо, что все мне объяснили, проблема решена.
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824378
Sisirona2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyда-да
спасибо, что все мне объяснили, проблема решена. Вот именно, наоборот, не решена )
А у меня, это уже такой сарказм, простите.)
Так почему, ваш пример авторoRegExp.Pattern = "(^ *)|( *?$)" работает и с Таб-ами? Правда, самой интересно.
...
Рейтинг: 0 / 0
RegExp: убрать пробелы в начале и конце строк
    #38824661
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего у вас их просто нет — при копировании текста в исходник в среде разработки VS или VBA символ табуляции заменяется четырьмя пробелами.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp: убрать пробелы в начале и конце строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]