Имя: Пароль:
1C
1С v8
Помогите составить регулярное выражение.
,
0 Molinor
 
29.06.12
14:10
Есть строки типа:
"x.x. ТекстТекстТекст"
"x.xх. ТекстТекстТекст"
"ТекстТекстТекст"
Где:
х - цифра
ТекстТекстТекст - некий текст, где могут встречаться любые символы.

Надо оставить только ТекстТекстТекст. Понятное дело, что можно это убрать всякими проверками, а вот регулярным выражением можно? И если можно, то каким?

Заранее спасибо!
1 Fragster
 
гуру
29.06.12
14:12
^[0123456789.]+\s+ заменить на пусто. только непонятно, почему бы просто по первому пробелу не отрезать
2 Molinor
 
29.06.12
14:14
(1)
Спасибо, попробую.
В ТекстТекстТекст тоже могут быть пробелы.
3 DrShad
 
29.06.12
14:15
лучше разбить разбить строку в массив по разделителю "." и получать последний элемент массива
в типовых даже есть функция общего модуля для разбиения строки в массив
4 PR
 
29.06.12
14:15
(2) И что?
5 PR
 
29.06.12
14:16
(3) Плохое решение.
В ТекстТекстТекст тоже могут быть точки.
6 Fragster
 
гуру
29.06.12
14:16
(2) прочитай еще раз (1), особенно слово "первому"
(3) фигня
7 DrShad
 
29.06.12
14:16
(5) в условии этого не было
8 PR
 
29.06.12
14:17
(7) >>ТекстТекстТекст - некий текст, где могут встречаться любые символы.
9 Fragster
 
гуру
29.06.12
14:17
(7) прочитай еще раз (0), особенно слово "любые"
10 Molinor
 
29.06.12
14:17
(6)
Строка: "прочитай еще раз", если отрезать по первому пробелу, то останется "еще раз", что неправильно.
11 DrShad
 
29.06.12
14:18
(9) еще раз сам прочитай (0) особенно "ТекстТекстТекст"  там нет первого пробела
12 DrShad
 
29.06.12
14:19
веселенький холиварчик намечается :)
13 VasjaIvanov
 
29.06.12
14:19
ТекстТекстТекст - некий текст, где могут встречаться любые символы.

условие неправильно, любые, значит и цифры тоже
значит искать первый пробел с лева на право,потом с этого места отрезать строку
14 Molinor
 
29.06.12
14:20
Для внесения ясности.
В "ТекстТекстТекст" может быть хоть какой текст, хоть первый том "Войны и мира".
15 Fragster
 
гуру
29.06.12
14:23
16 VasjaIvanov
 
29.06.12
14:27

строка = "x.xх. ТекстТекстТекст";
длинна = СтрДлина(строка);
Для и = 1 По длинна Цикл
 Если Лев(строка,и,1) = "Пробел" Тогда
      номер = и+1;
      возврат;
 конецЕсли;

КонецЦикла
нашастрока = Лев(строка,номер,длинна );
17 VasjaIvanov
 
29.06.12
14:28
Сред
18 Molinor
 
29.06.12
14:29
(16)
Что вернёт процедура для строки "прочитай еще раз" из (10)?
19 DrShad
 
29.06.12
14:31
(16) что за бред?
20 Molinor
 
29.06.12
14:38
Для ещё большей ясности:
1. "5.3. 13АБВ Тест: 13 раз два"
2. "5.35. 13АБВ Тест: 13 раз два"
3. "13АБВ Тест: 13 раз два"
На выходе надо получить "13АБВ Тест: 13 раз два" в любом из этих трёх случаев.
Единственное, что заметил, так это то, что число с точкой вроде бы в тексте не встречается, думаю от этого отталкиваться.
21 DrShad
 
29.06.12
14:41
(20) по твоим данным ответ в (3) как раз это и сделает
22 Fragster
 
гуру
29.06.12
14:42
(20) для большей ясности - регулярка из (0) работает, хотя правильнее было бы
^(\d+\.)+\s+
заменить на пусто.
на встроенном в 1с языке - отрезаем по первому пробелу, проверяем висит ли точка в конце, преобразовываем в массив по разделителю "." проверяем, все ли элементы массива - числа
23 Fragster
 
гуру
29.06.12
14:42
(21) а если в тексте точка?
24 Molinor
 
29.06.12
14:43
(22) Пока не проверял, честно, что-то увлёкся. Пойду проверю.
25 DrShad
 
29.06.12
14:43
(23) [по твоим данным]
26 Fragster
 
гуру
29.06.12
14:44
(25) ну, тестсы писать тоже надо уметь, да :)
27 Molinor
 
29.06.12
14:45
(26)
Это был как пример, все возможные случаи там не были учтены. Точка в тексте сама по себе может быть, после слова.
28 izekia
 
29.06.12
14:49
[\d\.]*\s*(\.*)
29 Fragster
 
гуру
29.06.12
14:50
(28) неа
30 izekia
 
29.06.12
14:51
(29) c чего бы это, простите?
автор сам написал про строки а не про многострочный текст
31 Molinor
 
29.06.12
14:51
(22) Проверил, работает, спасибо!
32 Fragster
 
гуру
29.06.12
14:54
(30) как минимум * это 0 и более повторений, [] - это "одно из", зачем (\.*) в конце - вообще не понятно, нет ограничения на начало строки.
на "Привет..." твое выражение заменит все точки на пусто. или у тебя не замена, а поиск остатка? это долго и выражение, опять же, не подходит...
33 izekia
 
29.06.12
14:54
^[\d\.]*\s*(.*)$
для многострочной

в (28) естественно:
[\d\.]*\s*(.*)
34 Fragster
 
гуру
29.06.12
14:55
(33) скачай хотя бы (15) и проверь свое выражение на тексте "Привет..."
35 izekia
 
29.06.12
14:56
(32) твое (22) на "ТекстТекстТекст" не будет работать
36 Fragster
 
гуру
29.06.12
14:56
(35) та ты шо?
37 izekia
 
29.06.12
14:59
(36) реально
38 zzhiraf
 
29.06.12
15:00
(32) Почему замена быстрее поиска вхождения? Или имеется в виду конкретный пример?
39 izekia
 
29.06.12
15:00
мой вариант из 33 вытащит все
40 zzhiraf
 
29.06.12
15:01
(32) ты проверял что дольше работает?)
41 izekia
 
29.06.12
15:01
(36) про твой вариант не прочитал, что ты заменять пытаешься, работать будет, конечно
42 izekia
 
29.06.12
15:02
(40) его будет быстрее
43 Fragster
 
гуру
29.06.12
15:02
(38) потому что на "войне и мире" замена без флага "все" найдет префикс нужный, заменит его и остановится, а поиск "всего без префикса" должен будет засосать всю строку. ну и как именно нафти все, кроме такого префикса - это непонятно. не (33) точно, там проверка непонятная, под которую любая строка вообще походит.
44 Fragster
 
гуру
29.06.12
15:02
(39) надо не "все", надо все, кроме префикса. твой вариант, если он типа для поиска - вытащит вообще все.
45 Fragster
 
гуру
29.06.12
15:02
(44)+ и всегда
46 izekia
 
29.06.12
15:05
(43) ты прав, но опять же строки так или иначе нам вытягивать, а здесь мы получаем готовый набор строк и в данном случае я думаю будет оптимальнее вытаскивать готовые строки, особенно если это делать в 1С
47 Fragster
 
гуру
29.06.12
15:06
(46)->(44)
48 izekia
 
29.06.12
15:08
(44) регулярка не вытаскивает все, когда ты запрашиваешь определенную группу, она просто выдает часть строки оригинала
в твоем случае, кстати,  тоже будет "засасываться" вся строка до конца, чтобы найти следующее начало строки
49 izekia
 
29.06.12
15:09
+(48) если речь идет про многострочный текст
50 izekia
 
29.06.12
15:09
но в моем случае мы будем иметь готовые вхождения без дальнейшей обработки
51 izekia
 
29.06.12
15:10
в итоге на наборе строк из массива твой метод будет быстрее, на многострочном тексте мой вариант
52 Fragster
 
гуру
29.06.12
15:14
(50) какие готовые вхождения? в твоем варианте надо смотреть массив подвхождений - дополнительные действия, также он неправильно работает например с
5.3.13АБВ Тест: 13. раз два
53 zzhiraf
 
29.06.12
15:14
(43) Ты проверял или чисто теоретически рассуждаешь?)
54 Fragster
 
гуру
29.06.12
15:15
(53) на твой вариант у меня комп задумывается, на мой - моментально выдает ответ
55 Fragster
 
гуру
29.06.12
15:15
(54) задумывается - на десятки мс, но вс
56 Fragster
 
гуру
29.06.12
15:15
ё равно заметно
57 zzhiraf
 
29.06.12
15:16
(55) Ну хорошо, уговорил)
58 izekia
 
29.06.12
15:21
(52) там точных условий нет, может быть это твой неправильно работает)
59 izekia
 
29.06.12
15:22
(54) пример текста приведи на каком задумывается?
60 Fragster
 
гуру
29.06.12
15:32
Холодный цинизм, без использования формальных признаков поэзии, неизменяем. Субъективное восприятие отражает экзистенциальный цикл, и это придает ему свое звучание, свой характер. Басня изящно представляет собой деструктивный диалогический контекст, первым образцом которого принято считать книгу А.Бертрана "Гаспар из тьмы". Силлабо-тоника, согласно традиционным представлениям, диссонирует мифологический акцент, и это ясно видно в следующем отрывке: «Курит ли трупка мой, – из трупка тфой пихтишь. / Или мой кафе пил – тфой в щашешка сидишь».

Обсценная идиома, как бы это ни казалось парадоксальным, отражает возврат к стереотипам, однако дальнейшее развитие приемов декодирования мы находим в работах академика В.Виноградова. Первое полустишие неумеренно выбирает метафоричный реформаторский пафос, но не рифмами. Филологическое суждение аннигилирует диалогический метаязык, что связано со смысловыми оттенками, логическим выделением или с синтаксической омонимией. В заключении добавлю, метонимия однородно осознаёт метаязык, и это ясно видно в следующем отрывке: «Курит ли трупка мой, – из трупка тфой пихтишь. / Или мой кафе пил – тфой в щашешка сидишь».

Поэт инстинктивно чувствовал преимущества реального устного исполнения тех стихов, в которых лирика прекрасно нивелирует брахикаталектический стих, заметим, каждое стихотворение объединено вокруг основного философского стержня. Синекдоха выбирает мифологический ритм, и это придает ему свое звучание, свой характер. Лексика выбирает литературный цикл, потому что сюжет и фабула различаются. Лирика, за счет использования параллелизмов и повторов на разных языковых уровнях, возможна. Женское окончание, соприкоснувшись в чем-то со своим главным антагонистом в постструктурной поэтике, неумеренно начинает подтекст, потому что в стихах и в прозе автор рассказывает нам об одном и том же.