|
Помогите составить регулярное выражение | ☑ | ||
---|---|---|---|---|
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) а что не одним выражением?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |