ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
Вытащить из текста все слова ничинающиеся на Сверх |

08.06.2010, 03:47
|
|
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме: 64471
Репутация:
0
|
|
Вытащить из текста все слова ничинающиеся на Сверх
Есть текст в нем есть слова которые начинаються на слоги "Сверх"
надо вытащить все эти слова. что бы получился список с такими словами.
Что-то пробую пробую, получилось только методом выделения текста и копирования. memo1.seltext.
Это очень медленно. Помогите народ. дайте пример?
Надо на делфи
|
|
|

08.06.2010, 04:18
|
|
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме: 893829
Репутация:
34
|
|
Очень просто
Кидаешь на форму 2 memo в memo1 кидаешь свои слова на кнопку кидаешь
var
i:integer;
begin
For i:=0 to memo1.lines.Count-1 do
if pos ('Вверх',memo1.lines[i])<>0 then
memo2.lines.Add(memo1.lines[i])
При нажатие на кнопку слова с "Сверх" с memo1 будут скопированы в memo2
Последний раз редактировалось 090808; 08.06.2010 в 04:20..
|
|
|

08.06.2010, 04:45
|
|
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме: 64471
Репутация:
0
|
|
090808, твой код копирует строки.
а надо слова.
Была сверх новая звезда блабла. сверхновый блабла.
привет сверху блабла
надо что бы вытащились слова: сверх, сверхновый, сверху
зы все слова одинаковой длины! в примере просто разная длина. длина слов: 8 символов
|
|
|

08.06.2010, 05:33
|
|
Познающий
Регистрация: 15.03.2009
Сообщений: 87
Провел на форуме: 893829
Репутация:
34
|
|
Код:
var
Find,s:string;
i:integer;
begin
find:='Сверх';
For i:=0 to Memo1.Lines.Count-1 do
If Pos(FIND, Memo1.Lines.Text)<>0
Then
Begin
Memo1.SetFocus();
Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1;
Memo1.SelLength:=Length(FIND)+3;
Memo2.Lines.Add(Memo1.SelText);
Memo1.text:=StringReplace(memo1.Text,Memo1.SelText,'',[rfReplaceAll]);
|
|
|

08.06.2010, 08:44
|
|
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме: 840493
Репутация:
0
|
|
Код:
procedure TForm1.btn1Click(Sender: TObject);
var reg1: tregexpr;
begin
reg1:= tregexpr.create;
reg1.Expression:='(сверх.*?) ';
if reg1.Exec(mmo1.Text) then begin
repeat
mmo2.Lines.Add(reg1.Match[1]);
until not reg1.ExecNext;
end; end;
Используя регулярки. Легко и быстро. Текст берется из mmo1.text и вставляется в mmo2.text
|
|
|

08.06.2010, 10:34
|
|
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме: 64471
Репутация:
0
|
|
090808, я же в топике писал, что чкркз сел текст сам сделал. но очень долго работает
SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
|
|
|

08.06.2010, 10:42
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме: 1819761
Репутация:
180
|
|
все просто
PHP код:
while(sText.Pos("сверх"))
{
sText.Delete(1, sText.Pos("сверх") + 5 - 1);
sWord = sText;
sWord.SetLength(sWord.Pos(" ") - 1);
Memo1->Lines->Add("сверх" + sWord);
}
|
|
|

08.06.2010, 10:49
|
|
Участник форума
Регистрация: 04.06.2009
Сообщений: 176
Провел на форуме: 840493
Репутация:
0
|
|
SultanOFF, ошибка: [Error] Unit1.pas(29): Undeclared identifier: 'tregexpr'
ты пропиши в uses regexpr; предварительно скачав модуль регулярок и положив в папку с проектом. Модуль можешь скачать отсюда
|
|
|

08.06.2010, 10:55
|
|
Новичок
Регистрация: 02.01.2010
Сообщений: 24
Провел на форуме: 64471
Репутация:
0
|
|
SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
|
|
|

08.06.2010, 11:08
|
|
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме: 1819761
Репутация:
180
|
|
Сообщение от bootsektor
SultanOFF, спасибо. так и сделал. но как решить вопрос то что после слова может быть не токо пробел? ище точки цифры и тд?)
...
PHP код:
for(int i = 1; i <= sWord.Length(); ++i)
{
if(sWord[i] < 'а' || sWord[i] > 'я')
{
sWord.SetLength(i - 1);
break;
}
}
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|