Ho cercato di insegnare a me stesso Python e sono attualmente in espressioni regolari. Il testo didattico che ho usato sembra essere finalizzato all'insegnamento di Perl o di qualche altro linguaggio che non sia Python, quindi ho dovuto adattare le espressioni un po 'per adattarsi a Python. Non sono molto esperto, tuttavia, e ho avuto un problema a cercare di far funzionare un'espressione.regex Python restituisce una parte della corrispondenza quando viene utilizzato con re.findall
Il problema riguarda la ricerca di un testo per istanze di prezzi, espresso senza decimali, $ 500 o con decimali, $ 500.10.
Questo è ciò che il testo raccomanda:
\$[0-9]+(\.[0-9][0-9])?
Replicare il testo, io uso questo codice:
import re
inputstring = "$500.01"
result = re.findall(r'\$[0-9]+(\.[0-9][0-9])?', inputstring)
if result:
print(result)
else:
print("No match.")
Tuttavia, il risultato non è $ 500,01, ma piuttosto:
.01
Lo trovo strano. Se rimuovo le parentesi e la parte decimale facoltativa, funziona correttamente. Quindi, utilizzando questo:
\$[0-9]+\.[0-9][0-9]
ottengo:
$500.01
Come posso ottenere l'espressione regolare per restituire i valori con e senza parti decimali?
Grazie.
Ora ** questa ** è una buona domanda sulle espressioni regolari. –
Jordan H. benvenuto in SO. È davvero bello vedere un utente nel suo primo giorno di postare una domanda che mostra uno sforzo di ricerca, è ben formulato e soddisfa le linee guida SO. – cezar