Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - По регулярному выражению выбрать часть текста

Ответить
Настройки темы
VBA - По регулярному выражению выбрать часть текста

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Всем доброго времени суток.
Есть регулярное выражение
^(АБВГ|ДЕЖЗ)\.\d+{6}\.\d+{3}
Надо из строки
АБВГ.123456.789.ДЕЖЗ9876-23
Получить
АБВГ.123456.789

Как это сделать регулярными выражениями?

Предложение типа rsplit использовать не предлагать.

Отправлено: 15:39, 25-05-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
Надо из строки
АБВГ.123456.789.ДЕЖЗ9876-23 »
Ещё примеры строк, пожалуйста. С десяток.

Отправлено: 17:13, 25-05-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


Выражения \d+{6} и \d+{3} некорректны. + обозначает 1 или более символов, а {3} - ровно 3.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 25-05-2021 | #3


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Да всё,я уже отмучился)
Если интересно, то так
Код: Выделить весь код
Sub MMM()
SS = "АБВГ.123456.789.ДЕЖЗ9876-23"
With CreateObject("VBScript.RegExp")
  .Pattern = "^[А-Яа-я]{4}\.\d{6}\.\d{3}(\-\d{1,3})?"
  MsgBox (.Execute(SS).Item(0))
 End With
End Sub

Последний раз редактировалось blackeangel, 25-05-2021 в 21:03.


Отправлено: 20:57, 25-05-2021 | #4


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Но, но, красивые исполнения, тоже можно поглядеть

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 21:15, 25-05-2021 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
Да всё,я уже отмучился) »
Ещё нет.

1. Что это за «?» в конце выражения?
2. Сначала нужно сделать .Test() и, если данный метод вернёт True — только тогда выполнять метод .Execute() и обращаться к классу MatchCollection.

Отправлено: 22:04, 25-05-2021 | #6


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, 1. Что данное в скобках может быть, а может и не быть. Вы мне сами когда то в 2017 году делали такое
2. Согласен. Всё должно быть красиво. И правильно.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 22:07, 25-05-2021 | #7


Аватара для shisik

Ветеран


Сообщения: 3247
Благодарности: 596

Профиль | Отправить PM | Цитировать


Цитата Iska:
1. Что это за «?» в конце выражения? »
Опциональная часть (\-\d{1,3})?

blackeangel, кстати если из содержимого скобок не нужно создавать группу в результате, то можно поставить ?:

Код: Выделить весь код
(?:\-\d{1,3})?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:13, 25-05-2021 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - По регулярному выражению выбрать часть текста

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - [решено] Заменить по регулярному выражению регулярное выражение blackeangel Программирование и базы данных 4 30-08-2017 14:59
2010 - [решено] Выделить часть текста цветом в ячейке по шаблону на всем листе blackeangel Microsoft Office (Word, Excel, Outlook и т.д.) 14 24-05-2016 01:10
2010 - Группировка по выражению veter48 Microsoft Office (Word, Excel, Outlook и т.д.) 14 30-03-2012 15:58
[решено] Вопрос по регулярному выражению в preg_split (PHP) ANR Вебмастеру 1 01-09-2010 14:58
MySQL - индекс по выражению. 3kLiN Программирование и базы данных 10 23-12-2007 01:00




 
Переход