[DESISTO] Ajuda com Regex

a = "“AAAA<h3>BBBB<h3>”

quero pegar AAAA<h3> e não tudo, ou seja, quero pegar até o primeiro <h3> e não até o último!

Como eu faço essa %%^@#$&()@#$&()&*() ?

c:&gt;irb
irb(main):001:0> a = "AAAA<h3>BBBB<h3>"
=> "AAAA<h3>BBBB<h3>"
irb(main):002:0> puts a.scan(/.+&lt;h3&gt;/)
AAAA<h3>BBBB<h3>
=> nil
irb(main):003:0> exit

Bom, acho que você tem de usar o operador não-ganancioso:

irb(main):058:0&gt; a.scan(/.+?&lt;h3&gt;/)
=&gt; [&quot;AAA&lt;h3&gt;", "BBB&lt;h3&gt;"]

EDIT - Vou transferir isto aqui para “Outras Linguagens / Ruby”.

Valeu, a parada é bizarra.

Deixo um desafio para quem quiser se aventurar, ou provar que de desafio a coisa não tem nada. :slight_smile:

Tenho o seguinte texto:

O cavalo correu em pé
E foi para a casa ROSADA
e comeu muito capim
e depois voltou para a CASA.
E depois de tudo tem a CASA de novo.

Qual o código RUBY que corta tudo entre o primeiro ROSADA e o penúltimo CASA?

O resultado final tem que ser:

O cavalo correu em pé
E foi para a casa
.
E depois de tudo tem a CASA de novo.

penúltimo “CASA” ou próximo “CASA” ?? pq se for o próximo facilita… só usar busca com lazy, como o thingol falou… com operador “?” antes da string desejada.

abraços

[quote=danielbadawi][quote=saoj]

Qual o código RUBY que corta tudo entre o primeiro ROSADA e o penúltimo CASA?

[/quote]

penúltimo “CASA” ou próximo “CASA” ?? pq se for o próximo facilita… só usar busca com lazy, como o thingol falou… com operador “?” antes da string desejada.

abraços[/quote]

Quero pegar até o penúltimo, e não até o último.

Usando scan de Ruby não funciona… :frowning:

esquece o “último”… eu entendi que vc nao quer fazer a busca até o final…

a questão é:
penúltima ou próxima ocorrência?

é que nesse caso que vc mostrou, a próxima ocorrência de CASA também é a penúltima ocorrência…

o que quero saber é se sempre vai querer a penúltima, ou sempre vai querer a próxima ocorrência…

pq se for procurar a próxima ocorrência aí é só usar o operador de lazy.

abraço :wink: