Según entiendo, la alternativa (o |) en regexps debería capturar el
string lo más largo posible. Sin embargo, no siempre es así:

En este ejemplo, como matchea la primera parte, ignora la segunda y
matchea una sola a (en vez de 2).
irb(main):002:0> "aaa".sub(/a|aa/) { "B" }
=> "Baa"

Si damos vuelta las cláusulas, matchea 2 a. Esto es raro, pensé que |
debería ser conmutativo.
irb(main):003:0> "aaa".sub(/aa|a/) { "B" }
=> "Ba"

Por último, si escribimos el mismo lenguaje con una regex de otra
forma, captura todo lo que puede capturar.
irb(main):004:0> "aaa".sub(/a{1,2}/) { "B" }
=> "Ba"

¿Está bien el comportamiento del |? ¿No debería siempre capturar 2 a?

Lo probé con ruby 1.8.7:
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

Saludos,
Aureliano.
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a