A friend of mine is learning python and commented how he thought it was a better programming language but perl’s regex’s were better and so was better suited to scripting. I had to set him straight so I wrote a simple script in perl and python to parse telephone numbers.
Sample data:
- (206) 329-1173
- 206.329.1173
- 206-329-1173
- 206 329-1173
- 329-1173
- 3291173
Python:
#!/usr/bin/env python
import sys,re
phonenumber = re.compile("\(?(\d{0,3})\)?[\.\-\s]?(\d{3})[\.\-\s]?(\d{4})")
for line in sys.stdin:
matches = re.match(phonenumber, line)
areacode = matches.group(1)
prefix = matches.group(2)
extension = matches.group(3)
if areacode == "":
print "Prefix = " + prefix + " Extension = " + extension
else:
print "Area code = " + areacode + " Prefix = " + prefix + " Extension = " + extension
Perl:
#!/usr/bin/env perl
use warnings;
use strict;
while (<>) {
my ($areacode, $prefix, $extension) = ( $_ =~ /\(?(\d{0,3})\)?[\.\-\s]?(\d{3})[\.\-\s]?(\d{4})/ );
if ($areacode eq "") {
print "Prefix = $prefix Extension = $extension\n";
} else {
print "Area code = $areacode Prefix = $prefix Extension = $extension\n";
}
}
Both scripts produce the same output:
Area code = 206 Prefix = 329 Extension = 1173 Area code = 206 Prefix = 329 Extension = 1173 Area code = 206 Prefix = 329 Extension = 1173 Area code = 206 Prefix = 329 Extension = 1173 Prefix = 329 Extension = 1173 Prefix = 329 Extension = 1173
Both scripts uses the exact same regex. Python is just as powerful as Perl for regular expressions.
Comments are closed, but trackbacks and pingbacks are open.