|
Помогите составить регулярное выражение. | ☑ | ||
---|---|---|---|---|
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
|
|
|||
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
|
Холодный цинизм, без использования формальных признаков поэзии, неизменяем. Субъективное восприятие отражает экзистенциальный цикл, и это придает ему свое звучание, свой характер. Басня изящно представляет собой деструктивный диалогический контекст, первым образцом которого принято считать книгу А.Бертрана "Гаспар из тьмы". Силлабо-тоника, согласно традиционным представлениям, диссонирует мифологический акцент, и это ясно видно в следующем отрывке: «Курит ли трупка мой, – из трупка тфой пихтишь. / Или мой кафе пил – тфой в щашешка сидишь».
Обсценная идиома, как бы это ни казалось парадоксальным, отражает возврат к стереотипам, однако дальнейшее развитие приемов декодирования мы находим в работах академика В.Виноградова. Первое полустишие неумеренно выбирает метафоричный реформаторский пафос, но не рифмами. Филологическое суждение аннигилирует диалогический метаязык, что связано со смысловыми оттенками, логическим выделением или с синтаксической омонимией. В заключении добавлю, метонимия однородно осознаёт метаязык, и это ясно видно в следующем отрывке: «Курит ли трупка мой, – из трупка тфой пихтишь. / Или мой кафе пил – тфой в щашешка сидишь». Поэт инстинктивно чувствовал преимущества реального устного исполнения тех стихов, в которых лирика прекрасно нивелирует брахикаталектический стих, заметим, каждое стихотворение объединено вокруг основного философского стержня. Синекдоха выбирает мифологический ритм, и это придает ему свое звучание, свой характер. Лексика выбирает литературный цикл, потому что сюжет и фабула различаются. Лирика, за счет использования параллелизмов и повторов на разных языковых уровнях, возможна. Женское окончание, соприкоснувшись в чем-то со своим главным антагонистом в постструктурной поэтике, неумеренно начинает подтекст, потому что в стихах и в прозе автор рассказывает нам об одном и том же. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |