Wie kann ich analysieren <img src> mit einer regex?
Brauche ich eine schlaue regex, match ...
in diesen:
<img src="..."
<img src='...'
<img src=...
Möchte ich mit der inneren Inhalt src
, aber nur wenn es ist umgeben von", " oder keiner. Dies bedeutet, dass <img src=..."
oder <img src='...
muss nicht akzeptiert werden.
Irgendwelche Ideen, wie mit diesen 3 Fällen mit einem regex.
Bisher habe ich so etwas ("|'|[\s\S])(.*?)\1
und der Teil, den ich will, um lose zu bekommen ist der hacky [\S\s]
die ich verwenden, um match "missing symbol" auf den Beginn und das Ende der ...
.
stackoverflow.com/questions/1732348/...
Was regex-Implementierung?
Es klingt wie das, was Sie wirklich benötigen, ist ein HTML-parser ist, und nicht ein regulärer Ausdruck.
Ich benutze Java. Und ich brauche ein HTML-parser... wirklich.
"clever" und "regex" gehen selten zusammen mit einem happy End.
Was regex-Implementierung?
Es klingt wie das, was Sie wirklich benötigen, ist ein HTML-parser ist, und nicht ein regulärer Ausdruck.
Ich benutze Java. Und ich brauche ein HTML-parser... wirklich.
"clever" und "regex" gehen selten zusammen mit einem happy End.
InformationsquelleAutor Lachezar | 2010-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wow, das zweite ich bin Anrufbeantworter heute.
Don ' T parse HTML mit regex. Verwenden Sie einen HTML - /XML-parser, und Ihr Leben wird viel einfacher. Sauber bereinigen Sie Ihren HTML-code für Sie, so können Sie die HTML-Ordentlich durch den ersten und dann durch einen parser. Einige ordentlich-basierten Bibliotheken führen die Analyse in zusätzlich zu santizing, und so können Sie gar nicht haben, um es durch einen anderen parser.
Java zum Beispiel hat JTidy und PHP hat PHP Tidy.
UPDATE
Gegen mein besseres wissen, ich gebe Euch dies:
/<img\s+src\s*=\s*(["'][^"']+["']|[^>]+)>/
Das funktioniert nur für Ihren konkreten Fall. Auch so, es wird nicht berücksichtigt, entkam
"
oder'
im Bild-source-Namen, oder die>
Charakter. Es gibt wahrscheinlich eine Reihe von anderen Einschränkungen als gut. Die Erfassung der Gruppe können Sie Ihre Bild-Namen (im Falle von Namen umgeben, die durch einzelne oder doppelte Anführungszeichen, es gibt Sie, diejenigen, die als gut, aber Sie können Streifen aus).Was wir Euch sagen ist, dass die Aufgabe ist nicht einfach genug, um durch eine kleine regex. Wenn es war, würden Sie bereits haben es möglich gemacht.
wenn die Aufgabe ist einfach genug zu tun, um eine regex, warum fragst du uns das? Wir sagen Euch, dass die Aufgabe ist nicht einfach genug gelöst werden durch ein regex (kleine oder anderweitig).
Ok, Sie überzeugen mich 🙂 Die Welt ist grausam und wahrscheinlich voll hässlich und versaut html-code, so dass ein parser ist eine Rettung... aber in einer perfekten Welt wahrscheinlich wird es möglich sein, nur grep den Inhalt des src-Attribute von img-tags 😀
vielleicht, aber wahrscheinlich nicht HTML ist nicht regelmäßig 🙂
InformationsquelleAutor Vivin Paliath
Je nachdem, welche Skript-oder Programmiersprache Sie verwenden, um dieses Problem zu lösen, es kann getan werden, entweder mit mehreren regex, oder einfach nur eine regex-Prüfungen Gruppen.
<img[^s]+src=("(.+)"|'(.+)'|(.+))[^/<]+(/>|</img>)
Wenn alle Sie wollen, ist das Bild src-Attribut, die Sie nicht haben zu analysieren, mit einem parser. In der Tat, wenn Sie wollen, sind andere Attribute, benutzen Sie einfach eine andere regex. Sie laufen in Probleme mit mehreren matches in den image-tag, aber in diesem Fall nur übereinstimmen von image-tags und für jedes führen Sie Ihre gewünschten regex.
InformationsquelleAutor Eric Matthews