Uczyłem się kilka lat pythona, ale w delphi regexy chyba się inaczej pisze. Mam zdanie:
Ala ma zielonego psa i "kota".
Jak pobrac z tego zdania:
Ala ma psa i kota.
Uczyłem się kilka lat pythona, ale w delphi regexy chyba się inaczej pisze. Mam zdanie:
Ala ma zielonego psa i "kota".
Jak pobrac z tego zdania:
Ala ma psa i kota.
\b\w{1,5}\b
Co konkretnie chcesz wykluczyć / znaleźć?
Napisałem:
Ala ma psa i kota.
No ok, czyli chcesz wykluczyć:
a) wszystkie wyrazy zaczynające się na z
,
b) wszystkie wyrazy zaczynające się na zi
,
...
aa) wszystkie wyrazy zawierające elo
,
...
ba) wszystkie wyrazy dłuższe od 4 znaków,
bb) wszystkie wyrazy dłuższe od 5 znaków,
...
ca) konkretny wyraz: zielonego
,
...
Kombinacji jest naprawdę wiele.
W pythonie to jest tak:
data = 'Ala ma zielonego psa , kangura i "kota".'
m = re.compile('^(.+?)zielonego(.+?),.+?"(.+?)"').findall(data)
if m:
print m[0][0] + m[0][1] + m[0][2]
Nie wystarczy tak:
s := 'Ala ma zielonego psa i "kota"';
x := 'zielonego ';
Delete(s, Pos(x, s), length(x));
?
Nie tak. Trzeba jeszcze usunąć '"'. Już mam rozwiązanie.
function ExtractHtml(const AInputString : string) : string;
const
HtmlRE = '^(.+?)zielonego(.+?)i "(.+?)"''';
var
R : TRegExpr;
begin
Result := '';
R := TRegExpr.Create;
try
R.Expression := HtmlRE;
if R.Exec(AInputString) then
Result := R.Match[1] + R.Match[2] + R.Match[3]
finally
R.Free;
end;
end;