Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

5 Март 2021, 19:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Замена с помощью регулярного выражения  (Прочитано 4142 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Strannik61
Участник
**
Offline Offline

Сообщений: 40


« Стартовое сообщение: 2 Ноябрь 2016, 11:35 »

Здравствуйте коллеги!
Возникла проблема. С помощью макроса создаются файлы и папки.
Имя файла и папки генерируются из краткого описания.
Проблема в том, что в описании могут быть любые символы, в том числе ' " ! , <> и т.д.
Подскажите как с помощью регулярного выражения оставить только буквенно-цифровой текст плюс пробелы.
С несчастью я не силён в регулярках.
На входе переменная
Код:
oURL=ConvertToURL(oNameDoc)
где oNameDoc и есть вводимый пользователем текст.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 061


iMac, LibreOffice и Apache OpenOffice


« Ответ #1: 2 Ноябрь 2016, 12:11 »

Подскажите как с помощью регулярного выражения оставить только буквенно-цифровой текст плюс пробелы.
Убрать не нужное, например: '|<|>|, уберёт четыре вида символов (апостроф, больше, меньше или запятую. Вертикальная черта означает "или").

Если нужно добавить ещё символов, разделять их вертикальной чертой. Некоторые символы надо экранировать обратным слэшем.

Заменить на "пусто".

Установить "птичку" регулярные выражения. Если в макросе, то разрешить.
Записан

Strannik61
Участник
**
Offline Offline

Сообщений: 40


« Ответ #2: 2 Ноябрь 2016, 12:20 »

А в макросе это как выглядит? Хотел оставить только цифры, буквы, пробел и точку.
Вот так не хочет работать
Код:
oReplace = oNameDoc
oReplace.SearchString = "[[:alpha:][:digit:] .]*"
oReplace.ReplaceString = "&"
oReplace.SearchRegularExpression=True
oNameDoc = replaceAll(oReplace)
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 049


« Ответ #3: 2 Ноябрь 2016, 12:25 »

Посмотрите здесь: https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=19149&start=0
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 061


iMac, LibreOffice и Apache OpenOffice


« Ответ #4: 2 Ноябрь 2016, 12:44 »

А в макросе это как выглядит? Хотел оставить только цифры, буквы, пробел и точку.
Код:
Sub Main
f=Array("'","<",">",",","!","?")   'символы которые нужно удалить
For i=0 To UBound(f)
Do
n=InStr(oNameDoc,f(i))
If n>0 Then mid(oNameDoc,n,1,"")
Loop While n>0
Next
'после выхода из цикла переменная oNameDoc будет очищена от не нужных символов
End Sub
« Последнее редактирование: 2 Ноябрь 2016, 13:14 от rami » Записан

Strannik61
Участник
**
Offline Offline

Сообщений: 40


« Ответ #5: 3 Ноябрь 2016, 18:06 »

rami - Спасибо. Но осталась проблема. Таким образом не удаляются двойные кавычки.
С помощью экранирования тоже не получилось.
Подскажите пожалуйста как их удалять?
Заранее спасибо.
P.S. Мне поэтому и хотелось с помощью регулярок, чтобы всё лишнее убрать. Жаль не получилось.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 061


iMac, LibreOffice и Apache OpenOffice


« Ответ #6: 3 Ноябрь 2016, 18:44 »

Но осталась проблема. Таким образом не удаляются двойные кавычки.
С помощью экранирования тоже не получилось.
Удаляются. Экранировать двойную кавычку надо такой же двойной кавычкой — будет выглядеть как четыре двойных кавычек подряд
Код:
f=Array("""","<",">",",","!","?")   'символы которые нужно удалить
а не три, как многие думают Смеющийся
Записан

Strannik61
Участник
**
Offline Offline

Сообщений: 40


« Ответ #7: 4 Ноябрь 2016, 11:34 »

Спасибо rami! А я пытался экранировать по привычке через backslash
И, конечно, не заработало. Всё хорошо
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!