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-->