saoj
Novembro 4, 2008, 3:38pm
#1
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:>irb
irb(main):001:0> a = "AAAA<h3>BBBB<h3>"
=> "AAAA<h3>BBBB<h3>"
irb(main):002:0> puts a.scan(/.+<h3>/)
AAAA<h3>BBBB<h3>
=> nil
irb(main):003:0> exit
thingol
Novembro 4, 2008, 3:46pm
#2
Bom, acho que você tem de usar o operador não-ganancioso:
irb(main):058:0> a.scan(/.+?<h3>/)
=> ["AAA<h3>", "BBB<h3>"]
EDIT - Vou transferir isto aqui para “Outras Linguagens / Ruby”.
saoj
Novembro 4, 2008, 5:18pm
#3
Valeu, a parada é bizarra.
Deixo um desafio para quem quiser se aventurar, ou provar que de desafio a coisa não tem nada.
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
saoj
Novembro 5, 2008, 7:00pm
#5
[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…
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