Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];
ВнизКак разбить текст на строки? Найти похожие ветки
← →
ekto © (2008-07-11 13:11) [0]Есть текст: (х А х А х......)
где: х - любая последовательность слов
А - искомая последовательность слов (хранятся в БД).
Нужно разбить текст на строки вида: (х А х)
(А х)
... ,
т.е. находится нужная фраза и все последующие слова до следующей, формируется строка и т.д.
← →
Dennis I. Komarov © (2008-07-11 13:12) [1]POS + F1 Спасет отца русской демократии...
← →
ekto © (2008-07-11 13:19) [2]
> Dennis I. Komarov © (11.07.08 13:12) [1]
Забыл добавить "по-быстрее".
есть набор данных( в котором искомые фразы). Ну и как, по твоему должен выглядеть код?
while not q.Eof do
begin
MyPos := Pos(q.FieldByName("n").AsString, tmpText);
if MyPos <> 0 then
begin
StrArr[i] := ...
Inc(i)
...
end;
а, если в StrArr[i], окажется пропущенная фраза?
← →
Ega23 © (2008-07-11 13:22) [3]
> POS + F1 Спасет отца русской демократии...
И + COPY
← →
Dennis I. Komarov © (2008-07-11 13:23) [4]> [2] ekto © (11.07.08 13:19)
Бред какой...
Ищи где надо разбить и вставляй #$13 #$10. Токма я не понял где результат хранить...
← →
ekto © (2008-07-11 13:29) [5]
> Dennis I. Komarov © (11.07.08 13:23) [4]
да, точно, протормозил. а где хранить - не важно
← →
Dennis I. Komarov © (2008-07-11 13:30) [6]> а где хранить - не важно
Очень даже важно, в виду упомянутой тобой БД...
← →
ekto © (2008-07-11 13:41) [7]
> Dennis I. Komarov © (11.07.08 13:30) [6]
while not q.Eof do
begin
MyPos := Pos(q.FieldByName("n").AsString, tmpText);
if MyPos <> 0 then
begin
tmpText := Copy(tmpText, 1, MyPos - 1) + #13#10 + Copy(tmpText, MyPos, Length(tmpText) );
...
StringList.Text := tmpText;
end;
← →
Поросенок Винни-Пух © (2008-07-11 13:41) [8]Ищи где надо разбить и вставляй #$13 #$10.
Это неправильно.
Так на строки не разбить
← →
Dennis I. Komarov © (2008-07-11 13:50) [9]> [7] ekto © (11.07.08 13:41)
with TStringList.Create ... do begin
Text:=q.FieldByName("n").AsString;
... дальше сам
Free;
end;
> [8] Поросенок Винни-Пух © (11.07.08 13:41)
Это смотря где и чего надо автору. ИМХО ему достаточно...
← →
oldman © (2008-07-11 13:52) [10]Кстати, а зачем искомая последовательнось хранится в БД?
Судя по задаче, она единственная. Или нет?
Если нет, что на выходе? N результатов разбивки текста?
Ничего не понимаю ©
← →
ekto © (2008-07-11 13:53) [11]
> oldman © (11.07.08 13:52) [10]
> Кстати, а зачем искомая последовательнось хранится в БД?
>
> Судя по задаче, она единственная. Или нет?
пока порядка тысячи, потом будет больше.
> Если нет, что на выходе? N результатов разбивки текста?
дальше обрабатывать
← →
han_malign © (2008-07-11 13:59) [12]
> Поросенок Винни-Пух © (11.07.08 13:41) [8]
- "Это какие-то неправильыне пчелы."©...
#$13 - Carriage Return - Возврат Каретки
#$10 - Line Feed - Перевод Строки
← →
Поросенок Винни-Пух © (2008-07-11 14:00) [13]Ой , а я то и не в кусре. И шо?
Они как-то "разбивают" строку?
← →
ekto © (2008-07-11 14:02) [14]
> Поросенок Винни-Пух © (11.07.08 14:00) [13]
> Они как-то "разбивают" строку?
на мелкие кусочки)
← →
Поросенок Винни-Пух © (2008-07-11 14:03) [15]#$10 - Line Feed - Перевод Строки
Вот если бы Разбиватель строки, тогда да. Согласен.
← →
Dennis I. Komarov © (2008-07-11 14:07) [16]
> [14] ekto © (11.07.08 14:02)
#$13 можешь не ставить... Кусочки будут еще мельче :)
← →
Anatoly Podgoretsky © (2008-07-11 14:39) [17]> Поросенок Винни-Пух (11.07.2008 14:00:13) [13]
В пух и прах. Вопрос только в том, что для автора строка и что он будет делать в следующий раз.
← →
ekto © (2008-07-11 14:40) [18]
> Anatoly Podgoretsky © (11.07.08 14:39) [17]
> что он будет делать в следующий раз.
т.е.?
← →
Anatoly Podgoretsky © (2008-07-11 15:08) [19]> ekto (11.07.2008 14:40:18) [18]
А что разфе эта операция будет только один раз запускаться?
← →
Dennis I. Komarov © (2008-07-11 15:15) [20]> [19] Anatoly Podgoretsky © (11.07.08 15:08)
Он все равно никому ничего не скажет. Это секрет...
← →
ekto © (2008-07-11 15:30) [21]
> Anatoly Podgoretsky © (11.07.08 15:08) [19]
нет, не единожды.
← →
Anatoly Podgoretsky © (2008-07-11 15:32) [22]> Dennis I. Komarov (11.07.2008 15:15:20) [20]
Сообственно я особо на это и не расчитываю, но буду удивлен, если он все таки все расскажет.
← →
ekto © (2008-07-11 15:45) [23]
> Anatoly Podgoretsky © (11.07.08 15:32) [22]
я расскажу, честно-честно. Но, только после того, как Вы мне объясните суть вопроса. Ну не понял я, что Вас тут интересует: что он будет делать вследующий раз.! С чем делать? Конкретно непонятно, чем отличается первый раз от следующего?
и еще... сбился я с бестолку совсем. С самого начала. Pos мне не подходит. Мне нужно полное совпадение слов/фраз.
str := авав сб ро лоыоыв сблг сб ропро длж;
substr := "сб";
...
Result := "авав сб ро лоыоыв сблг " + #13#10 + "сб про длж";
Как сделать, проверять каждый раз, стоят ли на концах найденной подстроки пробелы?
← →
Поросенок Винни-Пух © (2008-07-11 15:52) [24]регулар експешшионз
← →
ekto © (2008-07-11 15:53) [25]
> Поросенок Винни-Пух © (11.07.08 15:52) [24]
весьма и весьма сумневаюсь, что тут они будут кстати. Шаблоны зае... писать. Много их. И могут добавляться в процессе пользования прогой.
← →
Dennis I. Komarov © (2008-07-11 16:00) [26]> [23] ekto © (11.07.08 15:45)
Нафига все это надо, и где чего куда подробно...
← →
Поросенок Винни-Пух © (2008-07-11 16:01) [27]И могут добавляться в процессе пользования прогой.
Вот как раз в этом RE и удобны.
Так как без них ты модифицируешь алгоритм программы, а с ними только сами выражения, лежащие в файле
← →
Поросенок Винни-Пух © (2008-07-11 16:03) [28]Нравятся мне такие перцы.
Сначала ответь им про несколько возможных вариантов решения, потом поуговаривай, потом кашей накорми и еще спать положи.
← →
Поросенок Винни-Пух © (2008-07-11 16:06) [29]Как сделать, проверять каждый раз, стоят ли на концах найденной подстроки пробелы?
Проверяй через раз. Чтобы не устать.
← →
ekto © (2008-07-11 16:11) [30]
> Поросенок Винни-Пух © (11.07.08 16:03) [28]
А как прикажешь спрашивать? Не, ну могу, канеш, сказать что мне надо, а вы мне все напишите(если не пошлете), но чет так не очень хочется. А ваще да... мозгое... я еще тот... :)
> Так как без них ты модифицируешь алгоритм программы,
нафик мне его модифицировать? Все лежит в БД. Беру строку и смарю, та иль нет. Ну проще мне так. Точнее, делаю так, как могу.
← →
Поросенок Винни-Пух © (2008-07-11 16:12) [31]нафик мне его модифицировать?
Много их. И могут добавляться в процессе пользования прогой.
← →
ekto © (2008-07-11 16:13) [32]
> Поросенок Винни-Пух © (11.07.08 16:12) [31]
> Все лежит в БД.
← →
Поросенок Винни-Пух © (2008-07-11 16:14) [33]если алгоритм поиска границ не меняется, то с какого перепугу вдруг потребуется добавлять новые регулярные выражения?!
← →
Поросенок Винни-Пух © (2008-07-11 16:15) [34]> Все лежит в БД.
Да хоть в морге на третьей полке.
← →
ekto © (2008-07-11 16:15) [35]офтоп. я вот думаю, это только у меня рождаются такие мракобесные алгоритмы или нет? А то взять, да и приобрести метелочку?
← →
Поросенок Винни-Пух © (2008-07-11 16:17) [36]> Все лежит в БД.
Ты со строкой работаешь. А где она до этого лежала или стояла - как-то фиолетово.
Или в седьмом классе ты покупал чернила для седьмого класса?
← →
b z (2008-07-11 16:20) [37]
> А то взять, да и приобрести метелочку?
Это выход.
← →
Dennis I. Komarov © (2008-07-11 16:23) [38]> [35] ekto © (11.07.08 16:15)
Ты кетмара где то встретил? :)
← →
ekto © (2008-07-11 16:26) [39]
> Поросенок Винни-Пух © (11.07.08 16:17) [36]
так, если я правильно понял. Делается это сл. обр.: берется строка, делается для нее шаблон поиска и т.д. Так?
← →
ekto © (2008-07-11 16:27) [40]
> Dennis I. Komarov © (11.07.08 16:23) [38]
О, с удовольствием бы, но увы, подозреваю, он зело занят созданием теории неомизантропии.
← →
Поросенок Винни-Пух © (2008-07-11 16:31) [41]шаблон делается для строк, а не для одной строки
← →
ekto © (2008-07-11 16:31) [42]
> ekto © (11.07.08 16:27) [40]
я бы и от соавторства не отказался
← →
ekto © (2008-07-11 16:36) [43]
> Поросенок Винни-Пух © (11.07.08 16:31) [41]
хорошо, нашел по шаблону. А как я узнаю, что это нужная мне строка?
← →
Поросенок Винни-Пух © (2008-07-11 16:38) [44]а ты ищи нужные. ненужные не ищи.
← →
ekto © (2008-07-11 16:48) [45]
> Поросенок Винни-Пух © (11.07.08 16:38) [44]
а как отличить нужные от не очень? Шаблон-то для них одинаковым может быть.
← →
Dennis I. Komarov © (2008-07-11 16:51) [46]> [45] ekto © (11.07.08 16:48)
Ивеваться изволите?
← →
Anatoly Podgoretsky © (2008-07-11 16:51) [47]> ekto (11.07.2008 15:45:23) [23]
Чем первый сб отличается от второго?
← →
Dennis I. Komarov © (2008-07-11 16:52) [48]> [47] Anatoly Podgoretsky © (11.07.08 16:51)
Первый не нужный а второй нужный :)
← →
Поросенок Винни-Пух © (2008-07-11 16:57) [49]я поначалу думал что он программер...
← →
ekto © (2008-07-11 16:58) [50]
> Dennis I. Komarov © (11.07.08 16:51) [46]
> Anatoly Podgoretsky © (11.07.08 16:51) [47]
> Dennis I. Komarov © (11.07.08 16:52) [48]
Или я чего-то не знаю/понимаю или недостаточно понятно объяснил.
Рег. выражение. Шаблон: пробел_строка(с длиной, если надо)_пробел_строка_пробел - я здесь правильно ку? А дальше? под такой шаблон подходит почти все.
← →
ekto © (2008-07-11 17:01) [51]
> Поросенок Винни-Пух © (11.07.08 16:57) [49]
>
> я поначалу думал что он программер...
а я думал, что ошибаться свойственно только людям
← →
Anatoly Podgoretsky © (2008-07-11 17:02) [52]> Dennis I. Komarov (11.07.2008 16:52:48) [48]
Это единственная разница?
← →
Поросенок Винни-Пух © (2008-07-11 17:08) [53]Есть текст: (х А х А х......)
где: х - любая последовательность слов
А - искомая последовательность слов (хранятся в БД).
Нужно разбить текст на строки вида: (х А х)
(А х)
А если текст x A x A x A x A x A x A x A x A x A x A ?
← →
ekto © (2008-07-11 17:09) [54]
> Anatoly Podgoretsky © (11.07.08 17:02) [52]
между прочим раздел "для начинающих", могли бы и примерчик приплести к прочим своим мыслям. А то я тут гадаю на кофейной гуще, как именно работает поиск по шаблону. Оказалось не так, как я думал(хотя, уверен, я не смог вам объяснить, что же мне надо). :(. Плз, приведите пример ЛЮБОГО поиска по шаблону. И я вам расскажучто вы, ув. мастера, просмотрели.
← →
ekto © (2008-07-11 17:10) [55]
> Поросенок Винни-Пух © (11.07.08 17:08) [53]
это серьезный вопрос или любопытствование по поводу
> Поросенок Винни-Пух © (11.07.08 16:57) [49]
?
← →
Поросенок Винни-Пух © (2008-07-11 17:10) [56]10 wmz и золотой ключик у тебя в кармане
← →
Поросенок Винни-Пух © (2008-07-11 17:11) [57]это серьезный вопрос или любопытствование по поводу
Это вопрос по поводу
Нужно разбить текст на строки вида: (х А х)
(А х)
← →
ekto © (2008-07-11 17:12) [58]
> ekto © (11.07.08 17:09) [54]
или побегу за метлой
← →
Поросенок Винни-Пух © (2008-07-11 17:13) [59]сначала за тугриками беги
← →
ekto © (2008-07-11 17:14) [60]
> Поросенок Винни-Пух © (11.07.08 17:10) [56]
может 30 мин Бакнелла?
> Поросенок Винни-Пух © (11.07.08 17:11) [57]
Вопрос есть ответ. Для тебя это
> Нужно разбить текст на строки вида: (х А х)
> (А х)
,
> если текст x A x A x A x A x A x A x A x A x A x A ?
проблема?
А я думал, что ты....
← →
Поросенок Винни-Пух © (2008-07-11 17:15) [61]не спи, мужик!
почему
x A x
и
A x
И как делить если исходная строка длинее приведенной в начале ветки?
← →
Поросенок Винни-Пух © (2008-07-11 17:27) [62]ищешь x*\s+A\s+x\s+
Если найдено, это твоя первая строка.
Далее то же самое но со смещением MatchPos[0] + MatchLen[0] минус зазор c контролем выхода за длину.
← →
Тын-Дын © (2008-07-11 18:10) [63]
> ekto © (11.07.08 13:11)
Вот уже 62 поста выше, но так и не понятно, по какому алгоритму нужно разбивать строку...
← →
User (2008-07-11 18:17) [64]
> POS + F1 Спасет отца русской демократии...
... и добавить Copy ...
Никуда не денешься от цикла, нахождения нужного и фиксирования результата (позиции начала нужного). Copy можно использовать для урезания строки до позиции после "нужного" и ... продолжаем до конца строки ...
Если это текст - операцию нужно проводить построчно ...
← →
b z (2008-07-11 18:44) [65]Удалено модератором
← →
DVM © (2008-07-11 20:17) [66]Имхо регулярные выражения плохо вяжутся с понятием хорошей скорости обработки. Самым быстрым способом будет проход указателем по строке, сравнение части строки с эталоном, если совпадение, то копируем и сдвиг указателя далее за пределы найденного, если нет, то сдвиг на след символ.
← →
Поросенок Винни-Пух © (2008-07-11 22:37) [67]Имхо регулярные выражения плохо вяжутся с понятием хорошей скорости обработки.
Вяжутся только в путь.
← →
Поросенок Винни-Пух © (2008-07-11 22:52) [68]А вообще самое то.
В то время как у автора вообще нет рабочей реализации (никакой) парится над производительностью движка регулярных выражений.
← →
ekto © (2008-07-12 02:23) [69]
> Поросенок Винни-Пух © (11.07.08 22:52) [68]
> В то время как у автора вообще нет рабочей реализации (никакой)
> парится над производительностью движка регулярных выражений.
>
ориентировочно, с 16 часов у меня есть нормальная реализация. А насчет производительности согласен с
> DVM © (11.07.08 20:17) [66]
← →
ekto © (2008-07-12 02:29) [70]и вообще, Поросенок Винни-Пух, если уж берешься подсказывать, будь добр, прояви уважение к задающему вопрос и прочти внимательно сабжевые посты, ибо не верю я, что ты их прочел и не смог вникнуть в постановку задачи(а, судя по твоим ответам, ты не понял).
← →
Германн © (2008-07-12 02:44) [71]
> ekto © (12.07.08 02:29) [70]
>
> и вообще, Поросенок Винни-Пух, если уж берешься подсказывать,
> будь добр, прояви уважение к задающему вопрос
А ты всегда проявлял уважение к участникам сего форума? Перечитай свои посты.
← →
Anatoly Podgoretsky © (2008-07-12 10:40) [72]Да как же тебя понять, если ты ничего не говоришь.
(с) Иван Васильевич.
← →
Тын-Дын © (2008-07-12 21:19) [73]
> ekto
Задача тривиальная. Если бы сформулировал внятно вопрос - давно бы решил задачу.
← →
ekto © (2008-07-12 22:07) [74]
> Тын-Дын © (12.07.08 21:19) [73]
согласен, см.
> ekto © (11.07.08 13:29) [5]
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];
Память: 0.63 MB
Время: 0.041 c