Thread "nicht-escapetes" Zeichen finden (4 answers)
Opened by Matthias at 2005-05-28 11:57

Matthias
 2005-05-28 11:57
#55148 #55148
User since
2005-04-22
18 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte ein Sonderzeichen (z.B. #) finden, das nicht durch einen Backslash "escaped" ist.

Das lässt sich sicher mit einem negativen Lookbehind lösen.
Allerdings wird damit der Fall '\\#' , also ein literaler Backslash gefolgt von einem #, fälschlicherweise als escaped erkannt.

Meine Lösung dazu finde ich allerdings recht unschön:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use strict;
use warnings;

sub escaped { 
    my $string = shift;
    my $count = 0;
    $count++ if $string =~ /\\$/; 
    $count++ while $` =~ /\\$/ ;
    return ($count & 1)
}

#############################
#Aufruf:
    my $searchstring = '\#\\\#sfdgsdfgdsfg#ggg\\#';
    if ($searchstring =~ /#/ and not escaped $`)
    {
       print "# gefunden
";
    }


Ginge das auch "eleganter"?

Grüße

Matthias\n\n

<!--EDIT|Matthias|1117280087-->

View full thread "nicht-escapetes" Zeichen finden