2009-08-10 21 views
0

Ich habe Raw HTML und ich muss alle IMG src = "http: // foo" setzen.RegEx für die Einstellung IMG src = ""

Dies ist die RegEx Ich habe bisher, und es scheint zu funktionieren. In meiner Umgebung kann davon ausgegangen werden, dass Tags in Großbuchstaben und Attribute in Kleinbuchstaben geschrieben sind. Ich mache das in .Net, aber ich denke nicht, dass die Plattform hier wirklich eine Rolle spielt. \ s ist ein Leerzeichen in der .NET-RegEx-Engine.

Kann jemand verbessern?

Regex.Replace(htmlText, "(<IMG[^>]*\\ssrc=\")([^\"]*)(\"[^>]*>)", "$1http://foo$3") 

Antwort

1

kein regexpert mit irgendwelchen Mitteln für mehrere Räume erlauben, aber versuchen txt2re.com

vielleicht dies wird Ihnen den Einstieg: http://txt2re.com/index-ruby.php3?s=%3CIMG%20src=%22http://foo.bar/baz.jpg%22%20/%3E&1

+0

Dies ist ein guter Tipp zum Erlernen und Verwenden von regulären Ausdrücken. Danke fürs Schreiben. – reporter

+0

Danke! Es ist schön zu sehen, dass ein 2 Jahre alter Kommentar immer noch nützlich ist. – user94154

+0

Ein gutes Tutorial, um neue Dinge zu lernen, wird nie ablaufen ;-) – reporter

0

Vielleicht mit \s+

2

Spiel die gesamte IMG Markieren Sie zuerst das Attribut "src="([^\"]*)"" und ersetzen Sie es durch eine Ersatzzeichenfolge für den Teil src = "...".

Sie können dann die ursprüngliche Übereinstimmung verwenden und nach dem gesamten Tag suchen und es durch dieses ganze Tag ersetzen.

+0

Also die Suche nach Bild-Tag wäre "<[Ii] [Mm] [Gg] [^>] *>", und Sie könnten das src-Tag als fangen Kleinbuchstaben, oder insensitiv in ähnlicher Weise. – maxwellb

0

Ein anderer Ansatz besteht darin, einen HTML-Parser zu verwenden. IMO, Sie sind viel besser dran mit einem Parser als Regex für diese Aufgabe.

+0

+1. Obwohl ich dem normalerweise völlig zustimmen würde, funktioniert ein HTML-Parser manchmal nicht. Im Falle meiner Frage (eine alte Frage) war die Verwendung einer HTML-Parsing-Engine viel zu lang, da ich viel HTML in kurzer Zeit bearbeiten musste. Der Regex-Ansatz war wesentlich schneller, aber weniger robust. Dies wurde im OP jedoch nicht angegeben. –

+0

Die Hipster-Hacker-Stimme in meinem Kopf sagt, in diesem Fall die Nebenläufigkeit/MapReduce zu verwenden. Oder einfach nur mit Grep wie ein normaler, vernünftiger Mensch! – user94154