-- $Id: regexmatch.lua,v 1.4 2000/12/09 20:07:45 doug Exp $
-- http://www.bagley.org/~doug/shootout/
-- implemented by: Roberto Ierusalimschy

text = read("*a")

-- I added the following line and slightly modified the pattern 
-- match below so that the program will reject the case:
-- 1(111) 111-1111 (due to preceeding digit)
-- (Doug)
text = gsub(gsub(text, "^", "   "), "\n", "\n   ")

N = tonumber((arg and arg[1])) or 1
count = 0
while N > 0 do
  gsub(text,"%D(%D)(%d%d%d)(%)?) (%d%d%d)[- ](%d+)",
    function (A,area,B,exch,digits)
      if (A == '(') == (B == ')') and strlen(digits) == 4 then
        local tel = "("..area..") "..exch.."-"..digits
        if N == 1 then
          count = count+1
          write(count, ": ", tel, "\n")
        end
      end
    end)
  N = N-1
end