|
Помогите составить регулярное выражение |
☑ |
0
Маленький Вопросик
21.08.13
✎
20:27
|
Собственно сабжик:
"что-то там № [321312] от [23.12.12]"
нужно "выкусить" номер и дату записи
|
|
1
Рэйв
21.08.13
✎
20:29
|
делов то..
|
|
2
Рэйв
21.08.13
✎
20:29
|
что слаб о чтоли или лениво?
|
|
3
Маленький Вопросик
21.08.13
✎
20:34
|
(2) забыл. разучился
|
|
4
Маленький Вопросик
21.08.13
✎
20:34
|
не получается (((
|
|
5
1sik
21.08.13
✎
20:59
|
Если запись всегда имеет один и тот же формат можно например найти № , а зная позицию № дальше плясать. СокрЛП и тому подобное, а так же результат проверить на тип число.
|
|
6
Fragster
модератор
21.08.13
✎
21:11
|
RegExp = Новый COMОбъект("VBScript.RegExp"); // Объект для использования регулярных выражений
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Истина; //Многострочный режим
RegExp.Pattern = "(\d{3}/\d{2}/\d{8}) от (\d{2})\.(\d{2})\.(\d{4})";
|
|
7
Fragster
модератор
21.08.13
✎
21:11
|
|
|
8
Fragster
модератор
21.08.13
✎
21:11
|
Структура = Новый Структура;
Matches = RegExp.Execute(Текст);
ОчиститьСообщения();
Match = Matches.Item(0);
Submatches = Match.Submatches;
Структура.Вставить("Префикс", Лев(Submatches.Item(0),3));
Структура.Вставить("Номер", Submatches.Item(0));
Структура.Вставить("Дата", Дата(""+Submatches.Item(3)+Submatches.Item(2)+Submatches.Item(1)));
Возврат Структура;
|
|
9
Fragster
модератор
21.08.13
✎
21:13
|
для (0) подойдет (\S+) от (\d{2})\.(\d{2})\.(\d{4}) - у меня просто номер стандартизирован и в него метаданные закодированы сразу
|
|
10
Маленький Вопросик
21.08.13
✎
21:21
|
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = 0; //Игнорировать регистр
RegExp.Global = 1; //Поиск всех вхождений шаблона
RegExp.MultiLine = 0; //Многострочный режим
RegExp.Pattern ="[0-9]+\.[0-9]+\.[0-9]+"; //шаблон по "выкусыванию" даты договора
Matches=RegExp.Execute(Договор);
ЧислоВхождений=Matches.Count();
//
Для к = 0 По ЧислоВхождений-1 Цикл
ДатаДоговора = Дата(Matches.Item(к).value+" 0:00:00");
КонецЦикла;
//========================================================
RegExp.Pattern ="№\S+"; //шаблон по "выкусыванию" номера договора
Matches=RegExp.Execute(Договор);
ЧислоВхождений=Matches.Count();
//
Для к = 0 По ЧислоВхождений-1 Цикл
НомерДоговора = СтрЗаменить(Matches.Item(к).value,"№","");
КонецЦикла;
|
|
11
Маленький Вопросик
21.08.13
✎
21:21
|
вот так сработало
|
|
12
Fragster
модератор
21.08.13
✎
21:58
|
(11) а что не одним выражением?
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший