Главная страница
    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.01 c
15-1245213184
@!!ex
2009-06-17 08:33
2009.08.16
прикольная реклама gmail


2-1245271265
Zalm
2009-06-18 00:41
2009.08.16
Проблемы с DateToStr


15-1244567146
TUser
2009-06-09 21:05
2009.08.16
Чему равно 3^3^3 (этажерка из трех троек)?


15-1245096963
Игорь Шевченко
2009-06-16 00:16
2009.08.16
По поводу правоты/неправоты


2-1245381652
belmol
2009-06-19 07:20
2009.08.16
многопоточность





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