powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите регулярное выражение
12 сообщений из 12, страница 1 из 1
Подскажите регулярное выражение
    #39206565
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите регулярное выражение на шаблон 6 цифр и Lft. Есть строка вида "произвольный текст + 6 цифр + Lft + произвольный текст". Например "ОБРАЗЦЫ ДРЕВЕСНО-ВОЛОКНИСТЫХ ПЛИТ (ПАНЕЛЕЙ), С ОБРАБОТАННОЙ МЕХАНИЧЕСКИМ СПОСОБОМ , ПЛОТНОСТЬЮ БОЛЕЕ 0.8 Г/СМ3, ДЛЯ РЕКЛАМНЫХ ЦЕЛЕЙ 978654Lft . РАЗМЕЩАЮТСЯ В КАРТОННЫХ ПАПКАХ ПО ЧЕТЫРЕ ШТУКИ, РАЗМЕР ПЛИТЫ 145Х195ММ, СРЕДНЯЯ ПЛОТНОСТЬ ПЛИТЫ 1.31 Г/СМ3, СРЕДНЯЯ ТОЛЩИНА 29 ММ ДОПОЛНИТЕЛЬНО КАЖДАЯ ПАПКА КОМПЛЕКТУЕТСЯ".

Надо выбрать в переменную эти 6 цифр и Lft выделенные красным. Пожалуйста, подскажите регулярку.
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206624
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регуляркаподскажите регулярку.... "произвольный текст + 6 цифр + Lft + произвольный текст"Выражение настолько простое и рассматривается в абсолютно любом самом простом учебнике, что я начал сомневаться, правильно ли я понял вопроспроизвольный текст.+6 цифр\d{6}LftLftпроизвольный текст.+
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206636
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Shocker.Pro. Я примерно так и делал, но получаю неверный ответ. Что-то делаю неправильно. Функция отдает все, что размещается за шаблоном, но не то, что надо
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function Digits6lft(stroka) '6 цифр и слово "lft"
    Dim objRegExp As Object
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True
    objRegExp.Pattern = ".+\d{6}Lft+"
    
    Digits6lft = objRegExp.Replace(stroka, "")
End Function


Пробую в Immediate, получаю:
Код: vbnet
1.
2.
?Digits6lft(" ДЛЯ РЕКЛАМНЫХ ЦЕЛЕЙ 978654Lft. РАЗМЕЩАЮТСЯ")
. РАЗМЕЩАЮТСЯ

а не 978654Lft. Если задать точку перед правым плюсом в шаблоне, то вообще ничего не отображается.

Подскажите, что не так
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206645
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно взять в скобки то, что требуется вычленить
.+(\d{6}Lft)+
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206648
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНужно взять в скобки то, что требуется вычленить
.+(\d{6}Lft)+конечно.+(\d{6}Lft).+зачем вы там точку убрали?
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206650
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProНужно взять в скобки то, что требуется вычленить
Вот! оно самое! Спасибо!
Код: vbnet
1.
objRegExp.Pattern = "[^.+\d{6}Lft.+]"
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206658
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регуляркаоно самое! Спасибо!Хм, что за ересь. Я такого не предлагал. И зачем там вообще Replace, если нужно вычленить определенную подстроку?
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206668
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProХм, что за ересь. Я такого не предлагал. И зачем там вообще Replace, если нужно вычленить определенную подстроку?
Да, вы правы. Работает, но только с латиницей. С кириллицей проблема. Иногда вместо "Lft" пишут "Лфт". Пробую функцию с шаблоном "[^.+\d{6}Лфт.+]". Получаю дополнительные символы:
Код: vbnet
1.
2.
?Digits6lft("ДЛЯ РЕКЛАМНЫХ ЦЕЛЕЙ 555978654Лфт. РАЗМЕЩАЮТСЯ")
ЛЛЛ555978654Лфт.


Как их удалить? Вернее, как сделать правильно? С регулярными выражениями знаком очень слабо. Собственно впервые понадобилось.
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206670
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РегуляркаВернее, как сделать правильно?Сделать правильно - прочитать учебник по регулярным выражениям.

В данном случае
Код: vbnet
1.
MsgBox objRegExp.Execute(stroka)(0).SubMatches(0)
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206680
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВ данном случае
Код: vbnet
1.
MsgBox objRegExp.Execute(stroka)(0).SubMatches(0)


Ошибка 5: Invalid procedure call or argument
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function Digits6lft(stroka)
    Dim objRegExp As Object
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Global = True
    objRegExp.Pattern = "[^.+\d{6}Лфт.+]"
    
    Digits6lft = objRegExp.Execute(stroka)(0).SubMatches(0) 'Здесь ошибка
'    Digits6lft = objRegExp.Replace(stroka, "")
End Function 


Опрашиваю каунт SubMatches при ошибке, получаю 0. Хотя все есть в строке
Код: vbnet
1.
2.
3.
?Digits6lft("ДЛЯ РЕКЛАМНЫХ ЦЕЛЕЙ 555978654Лфт. РАЗМЕЩАЮТСЯ")
?objRegExp.Execute(stroka)(0).SubMatches.count
 0
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206684
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регулярка
Код: vbnet
1.
 objRegExp.Pattern = "[^.+\d{6}Лфт.+]"

я уже говорил, что это ересь и давал правильный паттерн
...
Рейтинг: 0 / 0
Подскажите регулярное выражение
    #39206696
Регулярка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, мои благодарности. Не увидел (прозевал) круглые скобки в Вашем ответе. Все работает. Спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите регулярное выражение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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