Ho difficoltà a trovare l'espressione regolare per l'inizio e la fine di un file in python. Come potrei realizzare questo?Inizio partita e fine del file in python con regex
risposta
Forse dovresti porre la tua domanda più chiaramente, come quello che stai cercando di fare. Detto questo, puoi slurpare il file in un'intera stringa e abbinare il tuo pattern usando re.
import re
data=open("file").read()
pat=re.compile("^.*pattern.*$",re.M|re.DOTALL)
print pat.findall(data)
Ci sono modi migliori per fare ciò che vuoi, qualunque esso sia, senza re.
Perché. * È avido, che troverà solo un'istanza di 'modello' in un file. Dato che hai specificato il flag re.M, $ corrisponde appena prima di ogni nuova riga nel file, quindi con greedy. * E re.DOTALL, il primo * corrisponderà a tutto prima dell'ultimo 'pattern' nel file e il secondo sarà abbinare tutto dopo l'ultimo 'modello'. –
qualunque cosa. questa non è una soluzione completa, poiché non siamo sicuri di cosa OP voglia davvero fare. Il meglio che posso fare è dirgli che può leggere l'intero file come una stringa e regex su di esso proprio come le normali stringhe. – ghostdog74
regex $
è NON il tuo amico; vedere this SO answer
Leggere l'intero file in una stringa, quindi \ A corrisponde solo all'inizio di una stringa e \ Z corrisponde solo alla fine di una stringa. Con re.MULTILINE, '^' corrisponde all'inizio della stringa e subito dopo una nuova riga, e '$' corrisponde alla fine della stringa e poco prima di una nuova riga. Consultare la documentazione di Python per re syntax.
import re
data = '''sentence one.
sentence two.
a bad sentence
sentence three.
sentence four.'''
# find lines ending in a period
print re.findall(r'^.*\.$',data,re.MULTILINE)
# match if the first line ends in a period
print re.findall(r'\A^.*\.$',data,re.MULTILINE)
# match if the last line ends in a period.
print re.findall(r'^.*\.$\Z',data,re.MULTILINE)
uscita:
['sentence one.', 'sentence two.', 'sentence three.', 'sentence four.']
['sentence one.']
['sentence four.']
- 1. Python regex partita asterisco letterale
- 2. fine partita con un estrattore
- 3. pitone partita regex e sostituire
- 4. Python testo partita regex tra virgolette
- 5. Grep per inizio e fine riga?
- 6. Data e ora di inizio e fine del mese
- 7. Javascript Regex Partita la prima del verificarsi
- 8. RegEx testo partita tra delimitatori
- 9. Espressione regolare - inizio e fine con una stringa di caratteri
- 10. ricorsivo CTE - consolidare inizio e di fine
- 11. Identità Inizio e fine di un metodo
- 12. Inizio giorno Jodatime e fine giornata
- 13. Espressione regolare: inizio partita o spazio vuoto
- 14. gamma Clojure con uno specifico inizio e fine infinito
- 15. Inizio RegEx con lettera o numero 0
- 16. Regex - Partita tutto senza spazi
- 17. eliminare linee con partita sed una regex speciale
- 18. linee di stampa in file dalla riga partita fino alla fine del file di
- 19. Guardare in vista Regex scartare una partita
- 20. Ora di inizio e ora di fine in JMeter Scheduler
- 21. Ottenere l'ora legale Inizio e fine in NodaTime
- 22. Trova inizio e fine indici di sottolista in lista
- 23. Partita a capo `\ n` in ruby regex
- 24. Come abbinare con Regex "partita più breve" in .NET
- 25. PARTITA o CERCA.VERT a partire dalla fine del campo
- 26. Come ricevere notifica di spostamento UITableViewCell inizio e fine
- 27. Controllare la partita IVA per correttezza sintattica con Regex possibile?
- 28. CMake regex partita directory nella lista
- 29. Regex: mancata corrispondenza di fine riga
- 30. Taglia su inizio/fine riga, incolla sopra alla fine/inizio riga
Le espressioni regolari sono applicati a stringhe e non dei file. – MattH