Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > RegExpr


Автор: Rondo 3.1.2007, 21:17
Появилась проблема с рег. выражениями smile Вроде сделать просто, только не могу найти..

У меня есть такое выражение:
Reg.Expression:= '<t[hd]>[0-9.]+</t[dh]>';

Оно мне выводит типа такого текста smile
<td>12,4</td>
<th>4</th>
....

После чего приходится в тексте делать s:= StringReplace(s, '<tag>', '', [rfReplaceAll]); и т.д..

Вобщем вопрос: хотелось бы чтоб рег. выражение сразу выдавало мне эти числа, чтоб мне потом не пришлось юзать StringReplace.. smile Подскажите какие символы нужно добавить в выражение.
 smile 

Автор: W4FhLF 3.1.2007, 21:44
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  exp: TRegExpr;
begin
  exp := TRegExpr.Create;
  exp.Expression := '(\<t[hd]\>)|(\<\/t[hd]\>)';
  ShowMessage(Exp.Replace('<th>12,4</td>', ''));
  exp.Free;
end;

Автор: Rondo 3.1.2007, 21:58
Гмм.. че то не то, не получается. И числа там у меня разные, необязательно 12.4, и лежит это все у меня в мемо в отдельной строке..

Автор: W4FhLF 3.1.2007, 22:13
Что не получается-то?

Цитата

procedure TForm1.FormCreate(Sender: TObject);
var
  exp: TRegExpr;
begin
  exp := TRegExpr.Create;
  exp.ModifierI := True; // регистронезависимый режим
  exp.ModifierM := True; // воспринимать многострочный текст
  exp.Expression := '(\<t[hd]\>)|(\<\/t[hd]\>)';
  Memo1.Text := Exp.Replace(Memo1.Text, '');
end;


В Memo у меня такой текст:

Цитата

<tD>12,4  </td><td>12,4   </td>
<TH>4</TH>
<th>234343242342344.332332   </th><td>блаблабла</td>
<th>4.4325434534</tH>


После обработки получаю:

Цитата

12,4  12,4   
4
234343242342344.332332   блаблабла
4.4325434534


Тебе разве не это надо было?

Автор: Rondo 3.1.2007, 22:21
Угу, сорри я че то ступил smile
Забыл сделать присваивание smile
Memo1.Text := Exp.Replace(Memo1.Text, '');

Respect

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)