Thread Zeichen in RegEx darf nicht zwischen <> stehen (26 answers)
Opened by Matze at 2006-04-18 11:40

Crian
 2006-04-19 11:28
#65025 #65025
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=Matze,18.04.2006, 11:43]Es ist schon sehr nah dran, allerdings verstehe ih nicht genau was dies: [^>]*(?:<|$) bewirkt.
Und bei folgender RegEx:
Code: (dl )
$data =~ s/(\d+)([^>]*(?:<|$))/<font color=\"#ff0000\">$1<\/font>$2/


Und folgender Testdatei:
Code: (dl )
1
2
3
4
5
6
7
<font color="#000000"><pre>
<br>"Hallo"
<br>1234<br>214214<br>346<br>
<br>
<br>();
<br>("Test! 2134",12421<br>
);</pre></font>


Dann wird bei mir leider die letzte Zahl(12421) nicht rot gefärbt.[/quote]
Das kommt davon, wenn ich nicht das schreibe was ich denke...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Daten\perl>perl
$data = qq{<font color="#000000"><pre>
<br>"Hallo"
<br>1234<br>214214<br>346<br>
<br>
<br>();
<br>("Test! 2134",12421<br>
);</pre></font>};
$data =~ s~(\d+)(?=[^>]*(?:<|$))~###$1###~g;
print $data;
^Z
<font color="#000000"><pre>
<br>"Hallo"
<br>###1234###<br>###214214###<br>###346###<br>
<br>
<br>();
<br>("Test! ###2134###",###12421###<br>
);</pre></font>


Also ist

Code: (dl )
(\d+)(?=[^>]*(?:<|$))


das was du brauchst.\n\n

<!--EDIT|Crian|1145431770-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Zeichen in RegEx darf nicht zwischen <> stehen