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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice  без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: прошу помощи с регэкспом  (Прочитано 1784 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MinasFilm
Форумчанин
***
Offline Offline

Сообщений: 86


« Стартовое сообщение: 17 Ноябрь 2014, 00:56 »

задача:
из строк вида
Крепление для CZ 550, pivot, single piece 30mm, h=18mm
удалить куски с размерами (числомм), оставив высоту (h=числоmm)
Для этого сделал регэксп:
,? *[0-9,\.] *(mm|мм) *
но он, ессно, "заденет" и куски вида h=18mm, чего допустить никак нельзя

нид хелп
Записан
fuel
Ку?
Участник
**
Offline Offline

Пол: Мужской
Расположение: Россия
Сообщений: 6

Усё пропало!


« Ответ #1: 17 Ноябрь 2014, 07:28 »

,? *[0-9,\.] *(mm|мм) *
А что "\d" не работает и надо "0-9"?

Код:
,? *
Не понятно - а где здесь литеры? В таком виде не совпадёт ни с "single piece", ни с "h=".

Определите также что будет экранированием. Слева у вас получается не только запятая, а если она всегда - то зачем одиночный не жадный "?", справа всегда "(mm|мм)".

Код:
,\ *h\ *=\ *[\d,\.]\ *(mm|мм)\ *
Отрицать такую конструкцию нужно. Но чтоб совпадало с
Код:
,(\ *[^\ \d,\.]+\ *)+\=?\ [\d,\.]\ *(mm|мм)\ *
Тут вопросы:
- в тексте типа "single piece" могут попадаться "\d\."?
- символ "\=" может появляться только перед "[\d,\.]\ *(mm|мм)\ *"?
« Последнее редактирование: 17 Ноябрь 2014, 07:39 от fuel » Записан

Землю - рабочим, фабрики - крестьянам!
rami
Гуру
*******
Online Online

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #2: 17 Ноябрь 2014, 10:35 »

задача:
из строк вида
Крепление для CZ 550, pivot, single piece 30mm, h=18mm
удалить куски с размерами (числомм), оставив высоту (h=числоmm)
Если нужно удалить только (числомм), то пишем найти:
Код:
[:digit:]+mm                         обратите внимание: самый первый символ в регэкспе пробел
заменить: ничего не пишем (пусто)
Результат: Крепление для CZ 550, pivot, single piece, h=18mm
Но это не будет работать если числа будут не целыми или миллиметры будут обозначаться "мм", а не "mm". Если что-то будет не правильно, приведите примеры не правильного.
Записан

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

Расположение: Н. Новгород
Сообщений: 40

Мяв? Мяв!


« Ответ #3: 17 Ноябрь 2014, 13:42 »

Код:
\d+\,?\d+?\s?([a-z]+|[а-яё]+),
Подходит?
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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