Linguistica Computazionale

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Linguistica Computazionale"

Transcript

1 Linguistica Computazionale Laboratorio espressioni regolari (2) 09 ottobre 2014

2 Esercizi Formalizzare con le espressioni regolari i patterns per trovare le seguenti stringhe: tutte le vocali minuscole o maiuscole

3 Esercizi (1) "le parole che iniziano per consonante : r \s[qwrtupsdfghjklzxcvbnm]\w* \s[qwrtypsdfghjkl ZXCVBNM]\w* le parole che terminano con un segno di punteggiatura (es. "cane," "finito;" ecc.) : r'\w+[,;.:?!]\s Il passato prossimo del verbo mangiare r \sho\smangiato \shai\smangiato \sha\smangiato \sabbi amo\smangiato \savete\smangiato \shanno\smangiato \ sho\smangiato \shai\smangiato \sha\smangiato \sabbia mo\smangiato \savete\smangiato \shanno\smangiato

4 Esercizi (2) le parole che iniziano per tar o per tr : r \star\w* \str\w* le date in cui giorno, mese e anno sono tutti espressi da numeri : r \s\d\d[-/]\d\d[-/]\d\d\d\d r \s[0-3]?\d[-/][01]?\d[-/][0-2]?\d?\d?\d\s' Usando l operatore di sostituzione "verticalizzate le parole, in modo che ogni parola venga scritta su una riga diversa: NuovaFrase=re.sub(r, r \n, frase)

5 Wildcard La RE r. corrisponde a qualsiasi carattere (eccetto il ritorno-a-capo) RE Definizione Esempi di matching r b.s r b.*s r.* qualsiasi stringa di tre caratteri che inizia con b e termina con s qualsiasi stringa che inizia per b e termina per s qualsiasi stringa (compresa quella vuota) bas bbs b3s b!s b s b,s baas bs bas bbs b3s b!s b s b,s baas bisogna prendere l autobus una intera riga di testo

6 Ingordigia e pigrizia I moltiplicatori in Python sono ingordi (greedy) fanno sempre matching con la stringa più lunga possibile r x+ axxxxxxxb axxxxxxxb r a.*c a xxx c xxx c xxx d a xxx c xxx c xxx d E possibile rendere i moltiplicatori pigri (lazy) facendoli seguire dal carattere? fanno matching con la stringa più corta possibile r a.*?c a xxx c xxx c xxx d a xxx c xxx c xxx d

7 Raggruppamento e memoria Le parentesi tonde (seguite dai simboli?: ) servono per raggruppare stringhe di caratteri da moltiplicare: RE Definizione Esempi di matching r (?:ab)+ una o più stringhe ab ab abab ababab r ab+ una a seguito da una o più b ab abb abbb Le parentesi tonde (senza?: ) memorizzano la stringa di testo corrispondente al contenuto delle parentesi: - la stringa viene memorizzata in una variabile temporanea - Il contenuto della variabile può essere richiamato con \<numero> - 1 = contenuto della prima coppia di parentesi; 2 = contenuto della seconda coppia di patentesi, ecc.

8 Raggruppamento e memoria RE Definizione Esempi di matching r ((?:ab)+)\1 r (a+)(b+)\1\2 la variabile \1 corrisponde a qualunque stringa abbia fatto matching con il contenuto delle parentesi la variabile \1 corrisponde a qualsiasi stringa abbia fatto matching con il contenuto della prima coppia di parentesi; la variabile \2 idem, ma rispetto alla seconda coppia di parentesi abab abababab abababababab abab abbabb aabaab abbaab r p(.)o p\1o r p.o p.o la variabile \1 corrisponde a qualunque stringa abbia fatto matching con il contenuto delle parentesi la wildcard. può essere sostituita da qualsiasi carattere pio pio pao pao pro pro, ecc. pio pao pao peo pio pio pio pao pro pso, pao pio, ecc.

9 Raggruppamento e memoria: Esercizi Il passato prossimo del verbo mangiare : Invece di: r \sho\smangiato \shai\smangiato \sha\smangiato \sabbi amo\smangiato \savete\smangiato \shanno\smangiato \ sho\smangiato \shai\smangiato \sha\smangiato \sabbi amo\smangiato \savete\smangiato \shanno\smangiato possiamo scrivere: r \s(?:ho hai ha abbiamo avete hanno Ho Hai Ha Abbiamo Avete Hanno)\smangiato oppure r \s(?:[hh](?:o ai a anno) [Aa](?:bbiamo vete))\smangiato

10 Raggruppamento e memoria: Esempio di sostituzione in Python Sostituire il segno - con il segno / all interno delle date espresse utilizzando soli numeri: Input: 17/10/2013, , , Output: 17/10/2013, 17/10/2013, 30/05/1977,

11 Caratteri speciali Alcuni caratteri hanno un significato speciale nel linguaggio delle RE [ ]? *. ( ) + - / { } Se questi caratteri fanno parte del pattern di testo da cercare, devono comparire in una RE con davanti il carattere \ (carattere di escape) r [a ERRORE! [ è interpretato come classe di carattere e manca la parentesi ] r \[a la stringa [a r a. qualsiasi stringa di due caratteri che inizia con a ab au a1 a? r a\. la stringa di testo a. r cane? le stringhe cane e can r cane\? la stringa cane?

12 Ancore Le ancore sono caratteri speciali che specificano dove deve comparire il pattern di testo da cercare ^<pattern> il <pattern> deve comparire all inizio di una linea <pattern>$ il <pattern> deve comparire alla fine di una linea RE Definizione Esempi di matching r cane$ r ^La r ^La Spezia$ la stringa cane quando compare alla fine di una linea la stringa La quando compare all inizio di una linea una riga che contiene solo la stringa La Spezia cane il cane di Mario La macchina era guasta il treno per La Spezia La Spezia a La Spezia per lavoro

13 Ancore \b è un ancora che indica il confine di una parola ( \B indica ogni punto non confine di parola) Il confine di una parola è un punto che ha da una parte un carattere di classe \w e dall altra o un carattere di classe \W o l inizio (fine) riga La macchina in giardino RE Definizione Esempi di matching r \bcane\b r \Bcane\b la stringa cane deve avere a destra e a sinistra un confine di parola la stringa cane deve avere a destra (ma non a sinistra) un confine di parola il cane è il canestro le americane sono il cane è il canestro le americane sono

14 Precedenza I moltiplicatori, le parentesi, l alternativa, le ancore sono operatori permettono di costruire RE complesse a partire da altre RE Esistono delle regole di precedenza tra gli operatori r a b+ Parentesi ( ) Moltiplicatori? * + {m,n}, ecc. Sequenze e ancore ata ^ $ \b Alternativa Le parentesi ( ) permettono di alterare l ordine di precedenza r a b+ vs. r (?:a b)+

15 Esercizi Formalizzare con le espressioni regolari i patterns per trovare le seguenti stringhe (NB: parola = sequenza di caratteri separati da spazi o ritorni a capo) "Tutti i numeri con o senza punto o virgola (es ; 0,56; 45; ecc.) Le parole in fondo ad una linea di testo che terminano per sto o per sito I punti di fine frase che compaiono in fondo ad una linea di testo Gli acronimi di almeno 2 lettere maiuscole con le lettere separate da punti (es. U.S.A.) I numeri formati da una cifra pari e una dispari alternata (es. 21, 234, 4896, ecc.) Le linee di testo che terminano con una lettera maiuscola L'imperfetto indicativo di amare, sia con la lettera minuscola che con la maiuscola (presentare la soluzione più sintetica) Usando l operatore di sostituzione: nelle date con il mese scritto a lettere, sostituire gli spazi con l'underscore (es. 25 marzo 2003 diventa 25_marzo_2003) separare con uno spazio le parentesi e le virgolette dalla parola (es mare, e (casa) diventano mare, e ( casa ) ) trasformate i numeri invertendo la prima cifra con l ultima (es: diventa ) trasformate tutte le parole del testo che iniziano per vocale invertendo il primo carattere con l'ultimo (es alto diventa olta)

Linguistica Computazionale

Linguistica Computazionale Linguistica Computazionale Laboratorio espressioni regolari (1) 30 settembre 2014 Cercare, ricercare Cercare una parola in un testo è semplice: ma come fare per ricerche più complesse? le parole che terminano

Dettagli

Lesson #4. Espressioni Regolari. Roberto De Virgilio

Lesson #4. Espressioni Regolari. Roberto De Virgilio Lesson #4 Espressioni Regolari Roberto De Virgilio Sistemi operativi - 9 Novembre 2015 Espressioni regolari in Unix Patterns (modelli) che individuano insiemi di stringhe (linguaggi) e rappresentano uno

Dettagli

Le grammatiche formali

Le grammatiche formali Le grammatiche formali Il carattere generativo dei sistemi linguisticii i Consideriamo i la seguente frase: Un gatto rincorre il topo Non facciamo difficoltà a riconoscere che si tratta di una frase sintatticamente

Dettagli

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura: Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata

Dettagli

LA CODIFICA DELL INFORMAZIONE

LA CODIFICA DELL INFORMAZIONE LA CODIFICA DELL INFORMAZIONE Prof. Enrico Terrone A. S: 20/2 Lo schema di Tanenbaum Il livello al quale ci interessiamo in questa lezione è il linguaggio macchina, l unico dove le informazioni e istruzioni

Dettagli

GLI INSIEMI PROF. WALTER PUGLIESE

GLI INSIEMI PROF. WALTER PUGLIESE GLI INSIEMI PROF. WALTER PUGLIESE INSIEME DEFINIZIONE UN RAGGRUPPAMENTO DI OGGETTI RAPPRESENTA UN INSIEME IN SENSO MATEMATICO SE ESISTE UN CRITERIO OGGETTIVO CHE PERMETTE DI DECIDERE UNIVOCAMENTE SE UN

Dettagli

La codifica dei caratteri di un testo

La codifica dei caratteri di un testo La codifica dei caratteri di un testo L obiettivo è quello di comunicare con il calcolatore usando il nostro linguaggio. Dobbiamo rappresentare le lettere dell alfabeto L insieme di simboli comunemente

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

Dettagli

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Dettagli

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd

Fondamenti d Informatica: Le Macchine di Turing. Barbara Re, Phd Fondamenti d Informatica: Le Macchine di Turing Barbara Re, Phd Esercizio 1 } Consideriamo una MdT che modifica una sequenza di A rimpiazzando ogni A in posizione dispari con una B (la prima A ha posizione

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Stringhe Tutor: Allegra De Filippo [email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 13 STRINGHE: Definizione e creazione Stringa

Dettagli

STRUMENTI MATEMATICI

STRUMENTI MATEMATICI 1. TABELLA A DOPPIA ENTRATA 1 STRUMENTI MATEMATICI E' un riquadro formato da righe orizzontali e colonne verticali. I dati sulla prima colonna sono i dati in entrata di ciascuna riga; i dati sulla prima

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

CALCOLO LETTERALE I MONOMI. Il primo tipo di oggetto che incontriamo nel calcolo letterale è il MONOMIO.

CALCOLO LETTERALE I MONOMI. Il primo tipo di oggetto che incontriamo nel calcolo letterale è il MONOMIO. CALCOLO LETTERALE Il calcolo letterale è importante perchè ci consente di realizzare un meccanismo di astrazione fondamentale per l'apprendimento in generale. Scrivere, ad esempio, che l'area di un rettangolo

Dettagli

Espressioni regolari

Espressioni regolari spressioni Regolari Un FA (NFA o DFA) e una macchina a stati finiti che riconosce linguaggi regolari. Una espressione regolare e un modo dichiarativo (o algebrico) per descrivere un linguaggio regolare.

Dettagli

Insiemi e sottoinsiemi

Insiemi e sottoinsiemi Insiemi e sottoinsiemi DEFINIZIONE. Per insieme matematico si intende un raggruppamento di elementi che possono essere definiti con assoluta certezza. Gli insiemi matematici vengono indicati con una lettera

Dettagli

Informatica Generale Homework di Recupero 2016

Informatica Generale Homework di Recupero 2016 Informatica Generale Homework di Recupero 016 docente: Ivano Salvo Sapienza Università di Roma Gruppo 1 Esercizio 1.1 Scrivere un programma C che presi in input due interi positivi a ed b (a, b > 0) calcola

Dettagli

Foglio Elettronico Lezione 1

Foglio Elettronico Lezione 1 - Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Seconda lezione a Python Dottore Paolo Parisen Toldin - [email protected] Dottoressa Sara Zuppiroli - [email protected] L'importanza di capire Perché non dobbiamo dichiarare

Dettagli

L insieme dei numeri Relativi

L insieme dei numeri Relativi L insieme dei numeri Relativi ITIS Feltrinelli anno scolastico 007-008 R. Folgieri 007-008 1 Ampliamento di N e Q: i relativi Nell insieme N non possiamo fare operazioni quali -1 perché il risultato non

Dettagli

I CARATTERI E LE STRINGHE

I CARATTERI E LE STRINGHE I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1 Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande/ VERSIONE 1 1) In Python, se scrivo v = [ ] in un programma, vuol dire che a) v è un quadrato b) v è un insieme vuoto

Dettagli

Moltiplicazione. Divisione. Multipli e divisori

Moltiplicazione. Divisione. Multipli e divisori Addizione Sottrazione Potenze Moltiplicazione Divisione Multipli e divisori LE QUATTRO OPERAZIONI Una operazione aritmetica è quel procedimento che fa corrispondere ad una coppia ordinata di numeri (termini

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli