Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
4-1194839861
Potato
2007-11-12 06:57
2008.08.17
Настройка тарелки на спутник, измерение сигнала качества


15-1214840729
@!!ex
2008-06-30 19:45
2008.08.17
У кого есть дельфи и SynEdit откомпилируйте, пожалуйста


15-1214737779
Галинка
2008-06-29 15:09
2008.08.17
Reactable - будущее электронной музыки


2-1216075012
DJ_UZer
2008-07-15 02:36
2008.08.17
кодировки, определение, открытие и преобразование


1-1196520892
NikolayV
2007-12-01 17:54
2008.08.17
Вопрос по ThemeServices





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский