View Full Version : [RegularExpressionPython] Semplice sostituizione
Salve ragazzi!
come fare per sostituire in python tramite le regular expression:
parola -> parole
Parola -> Parole
????
e ad esempio, per sostituire la 3 lettera di ogni parola come si fa?
grazie mille!
Salve ragazzi!
come fare per sostituire in python tramite le regular expression:
parola -> parole
Parola -> Parole
????
e ad esempio, per sostituire la 3 lettera di ogni parola come si fa?
grazie mille!
Allora per fare il match dell'ultima lettera di una parola puoi usare questa regex
/.$/
Mentre per catturare la terza lettera puoi usare questa
/(?<=.{2})./
Le puoi usare in un replace, io non ho mai usato python ma sicuramente ha funzione per fare il replace dando come parametro una regex.
ottimo grazie mille, sai consigliarmi un manuale su cui posso farmi una minima cultura?
grazie!
Un manuale no, ma qui (http://www.regular-expressions.info/) puoi già trovare una buona dose di informazioni!
Allora per fare il match dell'ultima lettera di una parola puoi usare questa regex
/.$/
MEMon scusa, ma quella regex mi fa il match dell'ultima lettera della stringa, a me serve dell'ultima parola
MEMon scusa, ma quella regex mi fa il match dell'ultima lettera della stringa, a me serve dell'ultima parola
Che vuol dire dell'ultima parola? L'ultima parola di che?
Sii più chiaro.
hai ragione, scusami:
str = parola parola parola parola parola
hai ragione, scusami:
str = parola parola parola parola parola
Quindi la tua richiesta è di voler fare il macth dell'ultima lettera di ogni parola in una stringa?
Quindi la tua richiesta è di voler fare il macth dell'ultima lettera di ogni parola in una stringa?
Se la tua richiesta è quella qui sopra puoi usare questa
/\w(?=[^\w]|$)/
esatto :)
ho fatto questo:
http://regexr.com?2s0tg ma come puoi vedere mi mette anche le parole che hanno come separator / oppure : !!
grazie ancora :)
esatto :)
ho fatto questo:
http://regexr.com?2s0tg ma come puoi vedere mi mette anche le parole che hanno come separator / oppure : !!
grazie ancora :)
Ok se ti interssa pure quello allora usa questa
/\w(?=\s|$)/
Questa ti prende solo le parole contenute fra degli "spazi".
che dire grazie mille, non so come tu faccia!
io mi sento davvero spaesato...
che dire grazie mille, non so come tu faccia!
io mi sento davvero spaesato...
Prego, tranquillo è solo questione di impratichirsi un attimo.
Comunque visto che credo ti interessi, la regex in questione fa questo:
\w prende tutte i caratterri alfanumerici, quelli che normalmente compongono una "parola" per così dire
\s|$ fa il match di uno "spazio" o del fine stringa(nel caso la parola sia l'ultima della stringa)
(?=) questo si chiama "Positive lookahead", in pratica fa il match di quello che lo procede, ma senza catturare quello che sta dentro alle tonde
quindi \w(?=\s|$) cattura tutti i caratteri alfanumerici che sono seguiti da uno spazio o è l'ultimo carattere disponibile, senza però catturare gli spazi.
ok il risultato definitivo per me sembra essere questo:
\w(?=\s|$|\]|,|\.)
ma c'è un modo di sostituire |\]|,|\. con ad es. un character set tipo \d per i digits? (cioè un set che riporta tutti i segni di punteggiatura ecc...)
no vabbè è solo una sega mentale cmq, va benissimo così :)
ok il risultato definitivo per me sembra essere questo:
\w(?=\s|$|\]|,|\.)
ma c'è un modo di sostituire |\]|,|\. con ad es. un character set tipo \d per i digits? (cioè un set che riporta tutti i segni di punteggiatura ecc...)
no vabbè è solo una sega mentale cmq, va benissimo così :)
Ma così cosa vorresti ottenere, sinceramente non ti seguo molto :D
Vediamo...
ciao
123prova
test,
pro.ova
elenco:
http:\\www
test-prova
Di queste, quali vuoi considerare parole e quali no?
ok il risultato definitivo per me sembra essere questo:
\w(?=\s|$|\]|,|\.)
ma c'è un modo di sostituire |\]|,|\. con ad es. un character set tipo \d per i digits? (cioè un set che riporta tutti i segni di punteggiatura ecc...)
no vabbè è solo una sega mentale cmq, va benissimo così :)
Quello che più si avvicina a quello che chiedi è \W che fa il match di tutti i caratteri NON alfanumerici, il contrario di \w insomma, ma se utilizzi quello ottieni lo stesso risultato che ottenevi con la tua regex ovviamente.
Quindi bisogna sapere cos'è che realmente vuoi perchè ancora non si capisce bene.
Prego, tranquillo è solo questione di impratichirsi un attimo.
Comunque visto che credo ti interessi, la regex in questione fa questo:
\w prende tutte i caratterri alfanumerici, quelli che normalmente compongono una "parola" per così dire
\s|$ fa il match di uno "spazio" o del fine stringa(nel caso la parola sia l'ultima della stringa)
(?=) questo si chiama "Positive lookahead", in pratica fa il match di quello che lo procede, ma senza catturare quello che sta dentro alle tonde
quindi \w(?=\s|$) cattura tutti i caratteri alfanumerici che sono seguiti da uno spazio o è l'ultimo carattere disponibile, senza però catturare gli spazi.
grazie mille sei stato davvero chiarissimo!!
Ed grazie anche per \W, era quello che cercavo ;)
a buon rendere
Ryuzaki_Eru
22-08-2010, 19:56
ottimo grazie mille, sai consigliarmi un manuale su cui posso farmi una minima cultura?
grazie!
Il libretto di Marco Beri ;)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.