Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Space character in regex is not recognised

Tags:

regex

perl

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";
like image 214
kurotsuki Avatar asked Nov 21 '11 00:11

kurotsuki


2 Answers

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.

like image 164
Tikhon Jelvis Avatar answered Sep 28 '22 05:09

Tikhon Jelvis


Use s/::/ /g. \s only denotes whitespace on the matching side, on the replacement side it becomes s.

like image 33
Fred Foo Avatar answered Sep 28 '22 05:09

Fred Foo