-- $Id: regexmatch.lua,v 1.4 2000/12/09 20:07:45 doug Exp $ -- http://www.bagley.org/~doug/shootout/ -- contributed by Roberto Ierusalimschy local text = io.read("*a") -- make sure text does not start with a number text = "\n" .. text -- pattern is: not a digit, optional (, 3 digits, optional ), -- space, 3 digits, space or hyphen, 4 digits, not a digit local pattern = "%D(%(?)(%d%d%d)(%)?) (%d%d%d)[- ](%d%d%d%d)%f[%D]" local N = tonumber((arg and arg[1])) or 1 local count = 0 for i=N,1,-1 do for open,area,close,exch,digits in string.gfind(text, pattern) do if (open == '(') == (close == ')') then local tel = "("..area..") "..exch.."-"..digits if i == 1 then count = count+1 io.write(count, ": ", tel, "\n") end end end end