[linux] Re: regex vraagje
Daniel von Asmuth
asmuth op bakunin.xs4all.nl
Wo Feb 8 20:59:35 CET 2006
On Wed, Feb 08, 2006 at 06:01:55PM +0100, Jelle Boomstra wrote:
> On Wednesday 08 February 2006 17:44, asmuth op bakunin.xs4all.nl wrote:
> > > Mag ik jullie even storen voor een regular expressions gerelateerde
> > > vraag? ik heb een file met links die ik uit een set html heb gegrept. Dat
> > > ziet er ongeveer zo uit: rommel* <a href="/links/die/ik/wil" name="niet
> > > interessant">de linktekst</a> meer niet interesaante rommel hier met
> > > <tags>
> > > en "quotes"
> > >
> > > dat wil ik omvormen naar een lijstje met op elke regel
> > > /links/die/ik/wil |de linktekst
> >
> > Probeer eens iets in de trant van
> >
> > sed -n <linkejes..html -e '
> > /.*<[aA][[:space:]]\+[hH][rR][eE][fF][[:space:]]*=[[:space:]]*"\(.*\)".*>\(
> >.*\)<\/[aA]>/ {
> > s//\1 \t\| \2/
> > p }'
> >
>
> Dankjewel, daar kwam al iets heel bruikbaars uit. blijkt gelijk hoe onprecies
> html is, veel links hebben nog wat tabel structuur ingebed zitten. En hij
> gaat nog fout op links waar een name="iets" attribuut bij zit.
Dat valt wel mee, maar je moet een goede parser schrijven i.p.v. met een
eenvoudige reguliere expressie te knoeien.
Misschien dat de volgende variant beter is:
sed -n <linkjes.html -e '
/.*<[aA][[:space:]]\+[hH][rR][eE][fF][[:space:]]*=[[:space:]]*"\([-a-zA-Z0-9.:/~%]\+\)".*>\(.*\)<\/[aA]>/{
s//\1 \t\| \2/
p }'
(hierin heb ik de meest voorkomende tekens in een URL expliciet vermeld)
Suc6,
Daniel
--
_----_
/ >
< intel/
\ Lag behind
\____/
More information about the Linux
mailing list