2009-11-10 8 views
2

Impossible d'obtenir Erlang re travailler pour multiline, s'il vous plaît aider!Expression régulière multiligne avec le module re Erlang

> re:run("hello,\nworld", "o,.*w", [multiline]). 
nomatch 
> re:run("hello,\nworld", "o,.*w", [multiline, {newline, lf}]). 
nomatch 

> {ok, MP} = re:compile("o,.*w", [multiline]). 
{ok,{re_pattern,0,0, 
       <<69,82,67,80,55,0,0,0,2,0,0,0,7,0,0,0,0,0,0,0,111,0, 
        119,...>>}} 
> re:run("hello,\nworld", MP). 
nomatch 

> re:run("hello,\nworld", ",\nw"). 
{match,[{5,3}]} 

Répondre

7

L'option multiline indique que le moteur de regex pour traiter ^ non seulement comme le début de la chaîne, mais aussi comme le début d'une nouvelle ligne et il indique également au moteur de traiter $ non seulement comme la fin de la chaîne, mais comme la fin d'une ligne.

Essayez ceci:

re:run("hello,\nworld", "o,.*w", [dotall]) 

L'option dotall indique au moteur regex de laisser également les sauts de ligne aller de pair avec le caractère méta DOT.

2

utiliser l'option dotall, à savoir

> re:run("hello,\nworld", "o,.*w", [dotall]). 
{match,[{4,4}]} 
Questions connexes