Space character in regex is not recognised
15,917
Solution 1
Try s/::/ /g
instead of s/::/\s/g
.
The \s
is actually a character class representing all whitespace characters, so it only makes sense to have it in the regular expression (the first part) rather than in the replacement string.
Solution 2
Replace the \s
with a real space.
The \s
is shorthand for a whitespace matching pattern. It isn't used when specifying the replacement string.
Solution 3
Use s/::/ /g
. \s
only denotes whitespace on the matching side, on the replacement side it becomes s
.
Solution 4
Replace string should be a literal space, i.e.:
$string =~ s/::/ /g;
Comments
-
kurotsuki almost 2 years
I'm writing a simple program - please see below for my code with comments. Does anyone know why the space character is not recognised in line 10? When I run the code, it finds the :: but does not replace it with a space.
1 #!/usr/bin/perl 2 3 # This program replaces :: with a space 4 # but ignores a single : 5 6 $string = 'this::is::a:string'; 7 8 print "Current: $string\n"; 9 10 $string =~ s/::/\s/g; 11 print "New: $string\n";