Форум: "Начинающим";
Текущий архив: 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