|
Регулярное выражение в 1с | ☑ | ||
---|---|---|---|---|
0
НатГолубева777
25.03.20
✎
11:56
|
Здравствуйте. Помогите, пожалуйста, составить регулярку на 2 выходные строки. Если есть кто то на форуме знающие.
Исходная строка-Артикул: 097. Комплект постельного белья (КПБ) из сатина (Д) "Фантазия"(1,5 спальный (2 наволочки)) 1-я выходная Артикул: 097. Комплект постельного белья (КПБ) из сатина (Д) "Фантазия" 2-я выходная 1,5 спальный (2 наволочки) |
|||
1
НатГолубева777
25.03.20
✎
11:59
|
Все то что доходит до первой скобки -идет 1-я выходная строка.
И то что идет после 1-ой открывающей скобкой и до последней закрывающей скобки будет 2 выходная строка |
|||
2
НатГолубева777
25.03.20
✎
11:59
|
Наврала не так
час перепишу |
|||
3
НатГолубева777
25.03.20
✎
12:01
|
Все что идет до последней кавычки в том числе последняя кавычка - это первая выходная строка.
Все то что идет после последней кавычки и без первой и последней скобки -это вторая вых. строка |
|||
4
НатГолубева777
25.03.20
✎
12:26
|
опытных нет?
|
|||
5
fisher
25.03.20
✎
12:32
|
Опытных бездельников нет.
А регулярка тут не нужна. |
|||
6
piter3
25.03.20
✎
12:32
|
есть,а деньги будут?)
|
|||
7
sitex
naïve
25.03.20
✎
12:33
|
(3) т.е. хотите сказать что кавычки у вас везде в справочнике?
|
|||
8
НатГолубева777
25.03.20
✎
12:35
|
да - номенклатура вводится по этому принципу
|
|||
9
fisher
25.03.20
✎
12:36
|
Даже если умеешь писать регулярки - нужно три раза подумать, стоит ли их использовать.
А если не умеешь - то используя чужие регулярки ты стреляешь себе по ногам. |
|||
10
НатГолубева777
25.03.20
✎
12:38
|
а по другому выделить строку на две строки не получается
|
|||
11
НатГолубева777
25.03.20
✎
12:39
|
раньше я хорошо составляла регулярки... просто сто лет не использовала его... подзабыла... и тем более делала регулярки в php
|
|||
12
fisher
25.03.20
✎
12:42
|
(10) Напрягись, наморщи мозг :) Здесь простой парсинг. Уровень сложности - школьная задачка по информатике.
(11) В php регулярки часто использовали для парсинга страниц не от большого ума. Просто как самый доступный способ. Грамотное их применение должно быть очень локальным и максимально застрахованным от сайд-эффектов. Грамотные разрабы тэги им не парсят. |
|||
13
fisher
25.03.20
✎
12:45
|
Не, для сабжа регулярки вполне подходят. Если бы они были встроены в платформу. А так - не стоит без особой необходимости внешние зависимости плодить. Тут особой вроде нет.
А если сама сейчас не напишешь, то завтра сама не сможешь ее и допилить. |
|||
14
080808Ник
25.03.20
✎
12:53
|
(0) формат всегда такой - строка (строка(строка))?
|
|||
15
НатГолубева777
25.03.20
✎
12:58
|
да
|
|||
16
НатГолубева777
25.03.20
✎
12:59
|
и кавычка последняя всегда по формату- строка" (строка(строка))
|
|||
17
080808Ник
25.03.20
✎
13:02
|
Если Так то как то
Стр = СокрлП(ИсходнаяСтрока); Счетчик = СтрДлина(Стр); НомерРазделителя = 0; Пока Счетчик > 0 Цикл Если Сред(Стр, Счетчик, 1) = "(" Тогда Если НомерРазделителя = 0 Тогда НомерРазделителя = Счетчик; Иначе НомерРазделителя = Счетчик; Прервать; КонецЕсли; КонецЦикла; Стр1 = Сред(Стр,1,НомерРазделителя -1); Стр2 = Сред(Стр,НомерРазделителя); |
|||
18
080808Ник
25.03.20
✎
13:03
|
как то так. но писал на коленке ошибки будут.
|
|||
19
sitex
naïve
25.03.20
✎
13:03
|
(18) > (9)
|
|||
20
080808Ник
25.03.20
✎
13:03
|
кстати да - первый косяк: КонецЕсли;
КонецЦикла; между ними Счетчик = Счетчик -1; |
|||
21
080808Ник
25.03.20
✎
13:06
|
(19) я же не настаиваю и регулярки писать не умею((( Одно радует - нет их в 1с.
|
|||
22
НатГолубева777
25.03.20
✎
13:08
|
СПАСИБО ... Час Попробую
|
|||
23
acht
25.03.20
✎
13:13
|
(17) Там, говорят, метод СтрНайти завезли. Врут?
|
|||
24
080808Ник
25.03.20
✎
13:14
|
(23) врут безбожно.
|
|||
25
080808Ник
25.03.20
✎
13:16
|
НомерРазделителя = СтрНайти(Стр,"(",направлениепоиска.СКонца,,2);
Стр1 = Сред(Стр,1,НомерРазделителя -1); Стр2 = Сред(Стр,НомерРазделителя); |
|||
26
080808Ник
25.03.20
✎
13:17
|
Давно не использовал СТрНайти. Не знал что ее так проапгрейдили)))
|
|||
27
НатГолубева777
25.03.20
✎
13:19
|
УРРРА сработало.....
|
|||
28
080808Ник
25.03.20
✎
13:23
|
(27) через стрнайти?
|
|||
29
НатГолубева777
25.03.20
✎
13:25
|
Без без него пока... час попробую через стр найти
|
|||
30
МихаилМ
25.03.20
✎
13:31
|
у нас новая мисти.
|
|||
31
080808Ник
25.03.20
✎
13:57
|
(29) ну что там?
|
|||
32
fisher
25.03.20
✎
14:02
|
Но если таки хочется вспомнить регулярки, то
Если работать с "группами захвата", то самый простой вариант (.*")\((.*)\) Тут две группы, возвращающие то что надо Если отдельными регулярками без "групп захвата", то 1) .*" это все с начала строки до последних кавычек включительно 2) (?<="\().*(?=\)) это все что в скобках после последних кавычек (без самих скобок) Тестил на regex101.com (у регулярок есть разные диалекты) |
|||
33
fisher
25.03.20
✎
14:08
|
Не. Это только если скобка идет сразу после кавычек. Беда с этими регулярками :)
|
|||
34
Ц_У
25.03.20
✎
14:16
|
Хватит валять ваньку
МассивСтрок = СтрРазделить("""") вернет массив из 3 строк 1. Артикул: 097. Комплект постельного белья (КПБ) из сатина (Д) 2. Фантазия 3. (1,5 спальный (2 наволочки)) |
|||
35
Ц_У
25.03.20
✎
14:23
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |