Показать полную графическую версию : По регулярному выражению выбрать часть текста
blackeangel
25-05-2021, 15:39
Всем доброго времени суток.
Есть регулярное выражение
^(АБВГ|ДЕЖЗ)\.\d+{6}\.\d+{3}
Надо из строки
АБВГ.123456.789.ДЕЖЗ9876-23
Получить
АБВГ.123456.789
Как это сделать регулярными выражениями?
Предложение типа rsplit использовать не предлагать.
Надо из строки
АБВГ.123456.789.ДЕЖЗ9876-23 »
Ещё примеры строк, пожалуйста. С десяток.
Выражения \d+{6} и \d+{3} некорректны. + обозначает 1 или более символов, а {3} - ровно 3.
blackeangel
25-05-2021, 20:57
Да всё,я уже отмучился)
Если интересно, то так
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:15
Но, но, красивые исполнения, тоже можно поглядеть ;)
Да всё,я уже отмучился) »
Ещё нет.
1. Что это за «?» в конце выражения?
2. Сначала нужно сделать .Test() и, если данный метод вернёт True — только тогда выполнять метод .Execute() и обращаться к классу MatchCollection.
blackeangel
25-05-2021, 22:07
Iska, 1. Что данное в скобках может быть, а может и не быть. Вы мне сами когда то в 2017 году делали такое :)
2. Согласен. Всё должно быть красиво. И правильно.
1. Что это за «?» в конце выражения? »
Опциональная часть (\-\d{1,3})?
blackeangel, кстати если из содержимого скобок не нужно создавать группу в результате, то можно поставить ?:
(?:\-\d{1,3})?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.