Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Вниз

составить Pattern(RegExp)   Найти похожие ветки 

 
dmitry1991   (2009-06-22 16:58) [0]

задача в следующем:

имеется список строк вида:
"Палатка туристическая Nova Tour Тайга 4 км N"    ""    "1636"    "0"
"Палатка туристическая Nova Tour Тайга 4 N"    ""    "1636"    "0"
"Ракетка теннисная"    ""    "2015"    "0"
"Шахматы пластиковые на магнитах"    ""    "1991"    "0"
"Шахматы 25x25 дерево"    ""    "1991"    "0"
"Шахматы 25x25 пластиковые на магнитах"    ""    "1991"    "0"
Необходимо извлечь 4 составляющие строки, значения в одинарных кавычках (значения разделены между собой символом табуляции).Помогите составить корректное условие поиска (Pattern).


 
Медвежонок Пятачок ©   (2009-06-22 17:00) [1]

засплиттить всю строку целиком в список по символу табуляции и все


 
dmitry1991   (2009-06-22 17:05) [2]

можете набросать пример, впервые сталкиваюсь с regexp


 
Медвежонок Пятачок ©   (2009-06-22 17:08) [3]

Меnод Split.
Аргументами входная строка, шаблон-разделитель (табуляция), и экземпляр списка куда все это засовывать


 
Palladin ©   (2009-06-22 17:12) [4]

Var
ss:TStringList;
n,m:Integer;

ss:=TStringList.Create;
Try
 n:=Pos(#9,s); m:=1;
 While n<>0 Do
  Begin
   ss.Add(Copy(s,m,n-1); m:=n+1;
   n:=PosEx(#9,s,m);
  End;
 ss.Add(Copy(s,m,Length(s));
Finally
ss.Free;
End;


 
Юрий Зотов ©   (2009-06-22 17:17) [5]

> Palladin ©   (22.06.09 17:12) [4]

Мне тоже кажется, что привлечение регвыражений для такой простенькой задачки - это стрельба из пушки по воробьям.


 
Palladin ©   (2009-06-22 17:23) [6]

Мне тоже, причем очень сильно, отсюда и пример без использования тяжелой артиллерии )

А так же, в случае использования  Делфи ниже 2009, рекомендую аффтору использовать следующую функцию:

Function vtPos(Const SS,S:String;p_nFrom:Integer=1):Integer;
Var
 nSLen,nSSLen,i,c:Integer;
Begin
 Result:=0;
 nSSLen:=Length(ss);
 nSLen:=Length(s);
 If (nSSLen=0) or (nSLen=0) or (p_nFrom=0) Then Exit;
 If p_nFrom>0 Then
  Begin
   c:=1;
   For i:=p_nFrom to nSLen Do
    If s[i]=ss[c] Then
     Begin
      Inc(c);
      If c=nSSLen+1 Then
       Begin
        Result:=i-c+2;
        Break;
       End;
     End Else c:=1;
  End Else
  Begin
   p_nFrom:=nSLen+p_nFrom+1;
   c:=nSSLen;
   For i:=p_nFrom Downto 1 Do
    If s[i]=ss[c] Then
     Begin
      Dec(c);
      If c=0 Then
       Begin
        Result:=i;
        Break;
       End;
     End Else c:=nSSLen;
  End;
End;


 
Palladin ©   (2009-06-22 17:23) [7]

вместо шататной функции PosEx из D7


 
dmitry1991   (2009-06-22 17:29) [8]


> Юрий Зотов ©   (22.06.09 17:17) [5]
> > Palladin ©   (22.06.09 17:12) [4]Мне тоже кажется, что
> привлечение регвыражений для такой простенькой задачки -
>  это стрельба из пушки по воробьям.


Так-то оно так... но в моем случае препод требует сделать именно с использованием RegExp. Уже несколько часов пытаюсь составить выражение - ничего не выходит.


 
Медвежонок Пятачок ©   (2009-06-22 17:32) [9]

SplitRegExpr(#9,MyString,MyStringList);



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
2-1245310635
wordmen
2009-06-18 11:37
2009.08.16
Как удалить символы перевода строки в Memo


2-1244993614
Gumz
2009-06-14 19:33
2009.08.16
Преобразование координат пикселей в градусы


15-1245045762
Knight
2009-06-15 10:02
2009.08.16
Помогите теорией. Полигон по направляющей полилинии.


15-1244925005
Юрий
2009-06-14 00:30
2009.08.16
С днем рождения ! 14 июня 2009 воскресенье


2-1245146560
Polkin
2009-06-16 14:02
2009.08.16
Assigned к объекту своего класса...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский