Regulärer Ausdruck für "String darf nicht vorkommen"
Threadstarter
- sonstiges
0 CPAN0 Threadstarter0 ChrisB0 Threadstarter0 Threadstarter2 molily
0 molily
Was für einen regulären Ausdruck brauche ich, wenn ein String nicht vorkommen darf?
negative assertions
http://perldoc.perl.org/perlretut.html#Looking-ahead-and-looking-behind
http://perldoc.perl.org/perlre.html#Look-Around-Assertions
Ich glaube, dass ist nicht ganz das was ich suche. Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen. Ich will aber verhindern, dass wenn es zwei Tags mit einem Namen gibt, das zweite mit verschluckt wird. Also muss ich dafür sorgen, dass zwischen dem öffnenden und schließenden Tag beliebige Zeichen und Tags, aber kein öffnendes oder schließendes Tag einer bestimmten Sorte vorkommt (Es ist an dieser Stelle nicht schlimm, dass man dadurch keine gleichen Tags verschachteln kann.).
Hi,
Ich glaube, dass ist nicht ganz das was ich suche.
Ich glaube, reguläre Ausdrücke sind es auch nicht:
Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.
http://stackoverflow.com/a/1732454
MfG ChrisB
Hi,
Ich glaube, dass ist nicht ganz das was ich suche.
Ich glaube, reguläre Ausdrücke sind es auch nicht:
Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.
http://stackoverflow.com/a/1732454
MfG ChrisB
Ich glaube schon, dass es dafür eine Möglichkeit gibt. Ich habe so etwas auch schon manchmal in fremdem Code gesehen, nur nichts für diesen speziellen Fall gefunden (Da gab es nur Reguläre Ausdrücke, bei denen innerhalb des gesuchten Strings gar keine Tags vorkommen dürfen, bei mir soll wie gesagt jedoch nur ein ganz bestimmtes Tag verboten sein).
Ich glaube, reguläre Ausdrücke sind es auch nicht:
Gibt es denn eine andere Möglichkeit?
Hallo,
Ich glaube, reguläre Ausdrücke sind es auch nicht:
Gibt es denn eine andere Möglichkeit?
nutze einen HTML-Parser. Steht im verlinkten Thread :-)
Freundliche Grüße
Vinzenz
Hallo,
Ich glaube, reguläre Ausdrücke sind es auch nicht:
Gibt es denn eine andere Möglichkeit?nutze einen HTML-Parser. Steht im verlinkten Thread :-)
Freundliche Grüße
Vinzenz
Ich glaube nicht, dass es sich lohnt, einen HTML-Parser zu verwenden, um einen einzigen regulären Ausdruck zu ersetzen.
Hallo,
JavaScript-RegExps sind ziemlich mächtig, sodass man durchaus fiese Dinge damit tun kann. Beispielsweise Elemente durch einen anderen Typ ersetzen:
function replacer (all, startTag, tagName, attributes, contents, endTag) {
var replacement = map[tagName];
if (replacement) {
return '<' + replacement + attributes + '>' + parse(contents) + '</' + replacement + '>';
} else {
return startTag + parse(contents) + endTag;
}
}
function parse (str) {
console.debug('parse', str);
return str.replace(/(<(\w+)([^>]*)>)(.*?)(<\/\2>)/g, replacer);
}
var map = {
i: 'em',
b: 'strong'
};
var str = '<p>bla <strong title="bar"><i>blub</i> foo <b style="font-weight: bold">sülz</b></strong> bar <div>xoxo</div></p>'
alert(parse(str));
Natürlich ist das nicht sonderlich zuverlässig, aber das sind auch nur 12 Zeilen Code.
Will man Entscheidungen anhand des Kontextes treffen, kommt man ohne einen Parsing-Stack nicht aus (wobei Rekursion sich ja gut dazu eignet, einen solchen auf- und abzubauen). Was nicht heißt, dass man reguläre Ausdrücke nicht dafür verwenden kann, einen Stack aufzubauen.
Mathis
Ich glaube, dass ist nicht ganz das was ich suche. Ich möchte bestimmte Tags innerhalb von HTML-Code ersetzen.
Welche Tags willst du in welchem Tags durch was ersetzen?
Zeig mal ein Beispiel.
Mathias