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:
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)
}
    my $searchstring = '\#\\\#sfdgsdfgdsfg#ggg\\#';
    if ($searchstring =~ /#/ and not escaped $`)
    {
       print "
";
    }
 
 
Ginge das auch "eleganter"?
Grüße
Matthias\n\n
<!--EDIT|Matthias|1117280087-->