Jump to content

Recommended Posts

Posted

Boas!

s/(<pattern>*( <expr>) <pattern>*)+/(<subs>*$seq<subs>*)+/

$str="O Mr. quando se ri, mais parece uma Miss";
$str =~ s/(.*)Mr\.(.*)Miss/$1Sr\.$2Menina/;

Resultado:

O Sr. quando se ri, mais parece uma Menina

Alguem pode explicar o porque deste resultado?

Posted

Podes começar por estudar isto.

.* significa fazer match de qualquer coisa.

(.*) significa fazer match de qualquer coisa e capturar o texto que fez match (que depois fica acessível através do $n).

Ou seja, tens uma operação de substituição onde o que aparece antes do "Mr." é capturado no $1, e o que aparece entre o "Mr." e "Miss" é capturado em $2. Depois usas estes $1 e $2 para produzires a string de resultado: $1Sr\.$2Menina.

Posted

Eu quando faço isto

$str =~ s/(.*)quando\.(.*)Miss/$1Sr\.$2Menina/;

O resultado nao deveria ser "O Mr. Sr se ri, mais parece uma Menina";

o que aparece antes de quando é capturado $1 e o que aparece entre quando e Miss é capturado em $2.

Posted

ok.

Tenho esta string

$frase="Luis Corte-Real Souza";

O resultado tem de ser L.C.R.S.

Eu tenho isto

 $frase=~s/([A-Z])[a-z- ]*/$1./g;

e esta a funcionar.

Eu queria saber é porque que assim

$frase=~s/([A-Z]*)[a-z- ]*/$1./;

nao funciona o resultado é L.Corte-Real Souza

Posted

frase="Luis Corte-Real Souza";

$frase=~s/([A-Z]*)[a-z- ]*/$1./;

L- como e maiusluca fica $1

u,i,s nao sao logo sao removidas

espaco tambem e removido

agora porque que não continua?

Quando faço isto [A-Z]*- não significa que isto pode ocorrer muitas vezes.

Em relação a flag g pelo que percebi ela, aplica a expressao a string toda.

Posted

Porque a expressão só é aplicada uma vez. Para continuar precisas do /g.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.