File: regexmatch.ruby

package info (click to toggle)
jruby 9.4.8.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 89,244 kB
  • sloc: ruby: 548,574; java: 276,189; yacc: 25,873; ansic: 6,178; xml: 6,111; sh: 1,855; sed: 94; makefile: 78; jsp: 48; tcl: 40; exp: 12
file content (33 lines) | stat: -rw-r--r-- 887 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: regexmatch.ruby,v 1.2 2005-05-17 05:20:31 bfulgham Exp $
# http://shootout.alioth.debian.org/
# modified by: Jon-Carlos Rivera

re = Regexp.new(
    '(?:^|[^\d\(])' +			# must be preceeded by non-digit
    '(?:\((\d\d\d)\)|(\d\d\d))' +	# match 1 or 2: area code is 3 digits
    '[ ]' +				# area code followed by one space
    '(\d\d\d)' +			# match 3: prefix of 3 digits
    '[ -]' +				# separator is either space or dash
    '(\d\d\d\d)' +			# match 4: last 4 digits
    '\D'				# must be followed by a non-digit
)

num = Integer(ARGV[0] || 1)

phones = STDIN.readlines

phonenum, count = "", 0

(1..num).each do |iter|
  phones.each do |line|
	  if line =~ re 
	    phonenum = "(#{($1 || $2)}) #{$3}-#{$4}";
	    if iter == num
		    count += 1
		    puts "#{count}: #{phonenum}"
	    end
	  end
  end
end