[erlang-questions] regexp sux!

Mats Cronqvist <>
Sat Mar 10 10:44:50 CET 2007


Torbjorn Tornkvist wrote:
> As usual, the regexp module drive me nutts.
> I simply want to do the equivalent to:
> 
> # from a bash shell
> 
> xx="<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>".
> echo $xx | sed 's/\(.*xml\
> version=.*encoding="\)\([a-zA-Z0-9_-]*\).*/\2/'
> ISO-8859-1
> 
> So how do I do this with the regexp module ?

   this will pull out the encoding string;

XX="<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>".
 >{match,B,L}=regexp:match(XX,"encoding=[\"[A-Z0-9-]+"),string:sub_string(XX,B+10,L+B-2).

   but i guess the question was really about how to get regexp groups/submatches 
to work. AFAIK, in that respect regexp is completely brain dead. i use the 
gregexp code by pascal brisset.

 > gregexp:groups(XX,".*encoding=\"\\([A-Z0-9-]+\\)\".*").
{match,["ISO-8859-1"]}

   mats



More information about the erlang-questions mailing list