Schrift
[thread]5776[/thread]

"Nicht Zeichengruppe" mit Regexp



<< >> 5 Einträge, 1 Seite
Netspider
 2003-09-29 15:13
#58401 #58401
User since
2003-09-25
49 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich kenn mich mit Regexps eigentlich recht gut aus, aber das hab ich noch nie gemacht:

Kann ich überprüfen, ob nach einem bestimmten ausdruck NICHT eine zeichenfolge kommt, also ich meine so:

Code: (dl )
1
2
<b>&lt;font&gt;</b>
<b>&lt;font</b> color="#FF0000"&gt;


in der 2. zeile soll um das &gt; ein <b> </b> kommen,
wenn nicht schon ein </b> danach steht, so dass er nicht in der 1. zeile nochmal <b> </b> drumschreibt.

Geht das??

im moment hab ich es so probiert, geht aber nicht:

Code: (dl )
$zeile=~s/&gt;!(<\/b>)/<b>&gt;<\/b>/ig;

wie muss ich das ändern??

Cu, Netspider
perl -e "s;;Ronny Lindner;;m;(..).$;;$l=$1;s;n;;g;m;.{4}$;;$_=$l;$I=$&;m;^(.);;$_.='ts';$_.=$1;$_++;$_++;$_.=$I;print ucfirst;"
havi
 2003-09-29 15:20
#58402 #58402
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Ich glaube du suchst nach !~

Gruss
kabel
 2003-09-29 15:26
#58403 #58403
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[quote=Netspider,29.09.2003, 13:13]Kann ich überprüfen, ob nach einem bestimmten ausdruck NICHT eine zeichenfolge kommt, also ich meine so:[/quote]
stichwort: negative zerowidth lookahead

Quote
$ cat test.pl
my $text = q~<b>&lt;font&gt;</b>
<b>&lt;font</b> color="#FF0000"&gt;~;

print $text, $/;
$text =~ s/(&gt;)(?!<\/b>)/<b>$1<\/b>/g;
print $text, $/;
$ perl -w test.pl
<b>&lt;font&gt;</b>
<b>&lt;font</b> color="#FF0000"&gt;
<b>&lt;font&gt;</b>
<b>&lt;font</b> color="#FF0000"<b>&gt;</b>
$
-- stefan
Netspider
 2003-09-29 19:20
#58404 #58404
User since
2003-09-25
49 Artikel
BenutzerIn
[Homepage] [default_avatar]
danke, ich hab nach
Code: (dl )
$text =~ s/(&gt;)(?!<\/b>)/<b>$1<\/b>/g;

gesucht!!
ich habe bei meinen versuchen nur das fragezeichen nicht drin gehabt, dann wäre es gegangen!!!

Cu und danke, Netspider

@Havi: ich habe es extra so mit beispiel geschrieben, damit keiner das schreibt was du geschrieben hast, denn das funktioniert so nicht, da ich einen teil im regexp haben will, einen teil aber nicht.
perl -e "s;;Ronny Lindner;;m;(..).$;;$l=$1;s;n;;g;m;.{4}$;;$_=$l;$I=$&;m;^(.);;$_.='ts';$_.=$1;$_++;$_++;$_.=$I;print ucfirst;"
Geewiz
 2003-09-29 22:42
#58405 #58405
User since
2003-09-29
69 Artikel
BenutzerIn
[Homepage] [default_avatar]
Kleine Anmerkung zum Stil: Wenn in den Regex selbst Slashes vorkommen, einfach ein anderes erlaubtes Trennzeichen nehmen.

Code: (dl )
$text =~ s#(&gt;)(?!</b>)#<b>$1</b>#g;


ist besser lesbar.
<< >> 5 Einträge, 1 Seite



View all threads created 2003-09-29 15:13.