AVVISO IMPORTANTE: riscontrati problemi con il database, alcuni utenti risultano amministratori. Leggere attentamente: viewtopic.php?f=17&t=638918

[Progetto] Programma per tradurre una regexp in italiano.

Iniziative e progetti della comunità legati a Ubuntu.
Regole della sezione
Questa sezione ha lo scopo di raccogliere le iniziative/progetti della nostra Comunità legati ad Ubuntu. I progetti ospitati nascono da iniziative degli utenti o gruppi di utenti. In futuro i progetti potrebbero rimanere iniziative "personali" o essere integrate nella distribuzione, sponsorizzate da Ubuntu o da Canonical a discrezione dei responsabili. All'interno di essa sarà possibile inserire delle discussioni che hanno la funzione di pubblicizzare avvenimenti, iniziative e progetti software su Ubuntu e GNU/Linux in generale. Sarà inoltre possibile per gli utenti proporre lo sviluppo di nuovi software e in questo caso la discussione di richiesta avrà la funzione di generare un requisito funzionale del prodotto da sviluppare.

Sezione I - Iniziative
  • Fanno parte di iniziative, ad esempio, le seguenti categorie: corsi, progetti editoriali, libri.
  • La segnalazione di un'iniziativa avviene creando una discussione con l'annuncio.
  • Una volta effettuata la segnalazione, la discussione viene chiusa dal Gruppo Forum.
  • Se l'iniziativa esposta comporta un costo di adesione o fruizione, questo deve essere esplicitamente riportato all'interno della discussione.
  • È obbligatorio segnalare all'interno della discussione i riferimenti per poter contattare/partecipare all'iniziativa.
Sezione II - Progetti
  • La segnalazione di un progetto software, come per le iniziative, avviene e si sviluppa all'interno di una singola discussione.
  • Sarà consentito l'inserimento di software solo se rilasciati sotto licenza GPL (in tutte le sue versioni) o equivalente FOSS, tale da garantire agli utenti l'utilizzo del prodotto senza restrizioni e agli sviluppatori la proprietà intellettuale del codice prodotto.
  • Nell'oggetto della discussione dovrà essere riportata la categoria (es. [Iniziativa], [Progetto] o [Proposta]) e una semplice descrizione del progetto.
  • Se il progetto ha già un sito che lo ospita sarà a discrezione del Gruppo Forum chiuderla come segnalazione o lasciarla aperta.
  • Se il progetto non ha un sito che lo ospita si potranno aprire due discussioni, una per proporre modifiche/implementazioni (dove nel titolo occorre specificare [sviluppo]) ed una per segnalare problemi (e nel titolo dovrà comparire [supporto]).
  • Non è consentita l'apertura di nuove discussioni in riferimento a versioni superiori o modificate di un prodotto già riportato in precedenza.
  • Se il software oggetto del progetto ha una dimensione non superiore ai 128 kB, per prodotti che non hanno un sito che li ospita, sarà possibile allegarlo alla discussione.
Sezione III - Proposte
  • Una proposta deve essere eseguita e si svilupperà all'interno di una singola discussione.
  • Le proposte dovranno essere inserite direttamente nella sezione "Progetti della Comunità".
  • Dovranno essere specificate le funzionalità che devono essere sviluppate.
  • Non dovranno essere riportate diciture tipo "...deve fare come questo software...", ma indicare nel miglior modo possibile i requisiti.
  • Una volta segnalata la discussione resterà aperta per consentire uno scambio di idee su come sviluppare il codice o finché gli sviluppatori non forniranno una soluzione (da pubblicizzare poi, come visto prima, nella sezione Progetti) che ne soddisfi il requisito.
Per quanto non esposto sopra, si fa comunque riferimento al Regolamento del forum ed al Codice di Condotta della Comunità.
Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

[Progetto] Programma per tradurre una regexp in italiano.

Messaggio da Vincenzo1968 » domenica 3 novembre 2013, 20:07

Il programma prende in input un'espressione regolare e stampa a video la traduzione in italiano.

Scaricate i sorgenti da qui: https://github.com/Vincenzo1968/regexptrans.git

Per compilare:

Codice: Seleziona tutto

unzip regexptrans-master.zip
cd regexptrans-master
./configure
make
sudo make install
Mi sono appoggiato a bison per suddividere la regexp nelle sue parti unitarie e creare l'ast. Per l'analisi lessicale utilizzo flex.

Dunque, prima di dare il comando ./configure, occorre accertarsi di avere entrambi i programmi installati:

Immagine

Se non fossero presenti nel sistema, si può installarli tramite apt-get:

Codice: Seleziona tutto

sudo apt-get install flex bison
oppure dai sorgenti:

Codice: Seleziona tutto

ls
bison-3.0.tar.gz  flex-2.5.37.tar.gz

tar xf flex-2.5.37.tar.gz
mkdir flex-2.5.37-build
cd flex-2.5.37-build/
../flex-2.5.37/configure
make
sudo make install

cd ..

tar xf bison-3.0.tar.gz
mkdir bison-3.0-build
cd bison-3.0-build/
../bison-3.0/configure
make
sudo make install
Un volta compilato, il programma va lanciato passandogli, da riga di comando, un'espressione regolare racchiusa tra virgolette singole:

Codice: Seleziona tutto

retoit '(ciao|salve) mondo'
Immagine

Immagine

Immagine

Immagine

Immagine

Immagine

Immagine

Immagine

ittore va invece richiamato passando il nome del file di testo:

Codice: Seleziona tutto

ittore myfile.txt
Ultima modifica di Vincenzo1968 il lunedì 18 novembre 2013, 14:24, modificato 25 volte in totale.
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 0:23

Ottimo!
Nel mio caso, ho Ubuntu 12.04, conviene fare l'installazione da sorgenti di "bison" altrimenti, non si riesce a compilare il programma; dai repo Ubuntu, altrimenti, si installa la versione 2.5.

Codice: Seleziona tutto

Con bison installato con apt-get

8-) flex --version
flex 2.5.35

8-) bison  --version
bison (GNU Bison) 2.5
Scritto da Robert Corbett e Richard Stallman.

Copyright (C) 2011 Free Software Foundation, Inc.
Questo e' software libero; vedere il sorgente per le condizioni cui e'
sottoposta la copia. NON c'è ALCUNA garanzia, neanche di
COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.

8-) tar xf RegExpTrans.tar.gz
8-) cd RegExpTrans
8-) make
cc -Wall -W -pedantic -O3   -c -o ast.o ast.c
flex -f -L -Ca lexer.l
bison -vd -o parser.c parser.y
/usr/share/bison/yacc.c:94: error: invalid pure value: pure
/usr/share/bison/yacc.c:94: the top level
parser.y:23.9-16: invalid value for %define Boolean variable `api.pure'
make: *** [parser.h] Errore 1
8-) 

istallazione da sorgenti di bison

tar xf bison-3.0.tar.gz
mkdir bison-3.0-build
cd bison-3.0-build/
../bison-3.0/configure
make
sudo make install

installazione programma

8-) cd RegExpTrans
8-) make
bison -vd -o parser.c parser.y
cc -Wall -W -pedantic -O3   -c -o lexer.o lexer.c
lexer.c: In function ‘yy_try_NUL_trans’:
lexer.c:1834:23: warning: unused variable ‘yyg’ [-Wunused-variable]
cc -Wall -W -pedantic -O3   -c -o parser.o parser.c
cc -Wall -W -pedantic -O3   -c -o main.o main.c
gcc -Wall -W -pedantic -O3 -o retoit ast.o parser.o lexer.o main.o         # ORA VA BENE
8-) 
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
matteovid
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 355
Iscrizione: mercoledì 9 dicembre 2009, 9:09
Desktop: Xfce, Mate
Distribuzione: GNU/Linux Debian 8 jessie
Località: Parma

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da matteovid » lunedì 4 novembre 2013, 11:40

Ciao Vincenzo
Ottimo e Utile questo tuo progetto
ecco come mi appare a me, dopo i tuoi perfetti screenshot :shy:

Codice: Seleziona tutto

matteo@matteo-test ~/RegExpTrans $ flex --version
flex 2.5.37
matteo@matteo-test ~/RegExpTrans $ bison --version
bison (GNU Bison) 3.0
Scritto da Robert Corbett e Richard Stallman.

Copyright (C) 2013 Free Software Foundation, Inc.
Questo e' software libero; vedere il sorgente per le condizioni cui e'
sottoposta la copia. NON c'è ALCUNA garanzia, neanche di
COMMERCIABILITA o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.
matteo@matteo-test ~/RegExpTrans $ 

Codice: Seleziona tutto

matteo@matteo-test ~/RegExpTrans $ make
cc -Wall -W -pedantic -O3   -c -o ast.o ast.c flex -f -L -Ca lexer.l bison -vd -o parser.c parser.y
cc -Wall -W -pedantic -O3   -c -o lexer.o lexer.c lexer.c: In function ‘yylex’:
lexer.c:1243:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
lexer.c: In function ‘yy_scan_bytes’:
lexer.c:2257:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
cc -Wall -W -pedantic -O3   -c -o parser.o parser.c
cc -Wall -W -pedantic -O3   -c -o main.o main.c
gcc -Wall -W -pedantic -O3 -o retoit ast.o parser.o lexer.o main.o
matteo@matteo-test ~/RegExpTrans $ 

Codice: Seleziona tutto

matteo@matteo-test ~/RegExpTrans $ ./retoit "[0-9]74[a-z]lsl[A-Z]CDE[cmosttl]ttl\cmos"

L'espressione regolare '[0-9]74[a-z]lsl[A-Z]CDE[cmosttl]ttl\cmos' si legge:

uno qualunque dei seguenti caratteri: [un carattere nell'intervallo fra ['0' e '9']]
seguito da '7'
seguito da '4'
seguito da uno qualunque dei seguenti caratteri: [un carattere nell'intervallo fra ['a' e 'z']] 
seguito da 'l'
seguito da 's'
seguito da 'l'
seguito da uno qualunque dei seguenti caratteri: [un carattere
nell'intervallo fra ['A' e 'Z']] 
seguito da 'C'
seguito da 'D'
seguito da 'E'
seguito da uno qualunque dei seguenti caratteri: ['c', 'm', 'o', 's','t', 't', 'l'] 
seguito da 't'
seguito da 't'
seguito da 'l'
seguito da 'c'
seguito da 'm'
seguito da 'o'
seguito da 's'
matteo@matteo-test ~/RegExpTrans $ 
Matteo
... Essere completamente onesti con se stessi è un buon esercizio.(cit. Freud)...
...come da regolamento non dò assistenza in MP, quindi se ricevo richieste di aiuto in MP, li cancello...

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 12:56

@ matteovid se devi "catturare" il carattere "\" devi devi farne l'escape raddoppiandolo "\\"

Codice: Seleziona tutto

8-) echo 'ab\cd' | grep -o 'a.*\\'
ab\

(Già fatta richiesta per possibilità di interpretazioni delle forme ungready e delle classi di caratteri [:xxx:])
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 13:40

Cercherò di aggiungere al più presto le funzionalità suggerite da UbuNuovo.

Grazie ragazzi per aver provato il codice e per i suggerimenti. :)

EDIT:
Volevo provare le forme ungready con grep come suggerito da UbuNuovo:

Codice: Seleziona tutto

echo 'abcdeafgahilmn' | grep -Po 'a.*a'
abcdeafga
echo 'abcdeafgahilmn' | grep -Po 'a.*?a'
abcdea
ma grep mi da errore:

Codice: Seleziona tutto

[vincenzo]$ grep --version
grep (GNU grep) 2.14
[vincenzo]$ echo 'abcdeafgahilmn' | grep -Po 'a.*?a'
grep: Il supporto all'opzione -P non è compilato in questo binario --disable-perl-regexp
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 14:35

Io di grep ho la versione 2.10, credo che il tuo problema dipenda dalla mancanza di "libpcre3".
Prova ad installarla con:

Codice: Seleziona tutto

sudo apt-get install libpcre3
e poi riprova.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 14:37

Credo di essere riuscito a fargli catturare le forme ungready:

Codice: Seleziona tutto

[vincenzo]$ ./retoit 'a.*?a'

L'espressione regolare 'a.*?a' si legge:

'a'
seguito da zero o uno zero o più qualunque carattere tranne nuova linea
seguito da 'a'
[vincenzo]$ ./retoit 'a.+?a'

L'espressione regolare 'a.+?a' si legge:

'a'
seguito da zero o uno uno o più qualunque carattere tranne nuova linea
seguito da 'a'
[vincenzo]$
Anche se andrebbe sistemata meglio la stringa di output, magari mettendo delle parentesi:

Codice: Seleziona tutto

seguito da zero o uno (uno o più (qualunque carattere tranne nuova linea))
o con i due punti:

Codice: Seleziona tutto

seguito da zero o uno: uno o più: qualunque carattere tranne nuova linea
Cosa suggerite? Parentesi, due punti, altro?
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 14:43

UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4478736#p4478736][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Io di grep ho la versione 2.10, credo che il tuo problema dipenda dalla mancanza di "libpcre3".
Prova ad installarla con:

Codice: Seleziona tutto

sudo apt-get install libpcre3
e poi riprova.
Mi dice:

Codice: Seleziona tutto

libpcre3 è già alla versione più recente.
Provo a reinstallare grep.
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 14:46

Bisognerebbe far capire che prende la 'a' più vicina, cioè la prima 'a' trovata dopo l'espressione ungready.
Non è facilmente spiegabile per simboli, credo vada scritta una frase vera e propria.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 14:51

Ma hai installato grep da sorgenti? Forse andrebbe rifatta la compilazione, levando l'opzione di configurazione "--disable-perl-regexp".
Purtroppo non mi intendo molto di questo genere di problemi.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 14:59

Praticamente per forme ungready si intende quanto spiegato qui :

http://www.regular-expressions.info/repeat.html

nel paragrafo Laziness Instead of Greediness?
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 15:01

UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4478752#p4478752][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Ma hai installato grep da sorgenti? Forse andrebbe rifatta la compilazione, levando l'opzione di configurazione "--disable-perl-regexp".
Purtroppo non mi intendo molto di questo genere di problemi.
Non mi ricordo se l'ho installato dai sorgenti o tramite apt-get.
Comunque per testare le regexp utilizzo anche questo tester online: http://regexpal.com/
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 15:08

Si, come vedi negli esempi che ti avevo mandato, normalmente con una stringa 'abcdeafgahilmn'
'a.*a' va a prendere la corrispondenza più lontana sulla riga della lettera 'a' quindi:
"abcdeafga"
mentre con "a.*?a" prende la corrispondenza più vicina:
"abcdea"
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 15:19

UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4478768#p4478768][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
Si, come vedi negli esempi che ti avevo mandato, normalmente con una stringa 'abcdeafgahilmn'
'a.*a' va a prendere la corrispondenza più lontana sulla riga della lettera 'a' quindi:
"abcdeafga"
mentre con "a.*?a" prende la corrispondenza più vicina:
"abcdea"
Ok, adesso è chiaro. Bisogna aggiungere un'altra regola grammaticale.
Mi metto subito al lavoro.
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 16:22

Così è corretto?:

Codice: Seleziona tutto

[vincenzo]$ ./retoit 'a.*?a'

L'espressione regolare 'a.*?a' si legge:

'a'
seguito da zero o più qualunque carattere tranne nuova linea(con la corrispondenza più vicina di 'a') 
[vincenzo]$ ./retoit 'a.+?a'

L'espressione regolare 'a.+?a' si legge:

'a'
seguito da uno o più qualunque carattere tranne nuova linea(con la corrispondenza più vicina di 'a') 
[vincenzo]$ ./retoit 'a.*a'

L'espressione regolare 'a.*a' si legge:

'a'
seguito da zero o più qualunque carattere tranne nuova linea
seguito da 'a'
[vincenzo]$ ./retoit 'a.+a'

L'espressione regolare 'a.+a' si legge:

'a'
seguito da uno o più qualunque carattere tranne nuova linea
seguito da 'a'
Se confermi aggiorno i sorgenti allegati.
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 16:39

A me pare comprensibilissimo!
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 16:44

rileggendolo... forse è meglio (fino alla corrispondenza più vicina...)
o meglio
"seguito dalla corrispondenza più vicina..."
Che ne pensi?

p.s: .per fargli usare le "libpcre3", grep andrebbe ricompilato con "--with-pcre"
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8151
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da crap0101 » lunedì 4 novembre 2013, 17:01

io non metterei le parentesi attorno a quel periodo... dànno l'idea di una specificazione, un'informazione aggiuntiva non strettamente necessaria, mentre è una parte importante della spiegazione della regex.

Piuttosto metterei tra parentesi la parte del newline che in genere (tranne nei casi in cui lo si abilita tramite flag) non è considerato facente parte i caratteri che matchano, per cui è implicitamente escluso. Proprio per questo si potrebbe anche togliere quella parte che appesantisce la lettura e nominare il newline solo quando vine abilitato nel match, d'altra parte per consistenza potrebbe anche avere senso scriverlo ogni volta... in definitiva, una cosa cosa del genere:
'a' seguito da uno o più qualunque carattere (tranne nuova linea) fino alla corrispondenza più vicina di 'a'
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs

Avatar utente
Vincenzo1968
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 450
Iscrizione: lunedì 14 gennaio 2013, 14:21
Desktop: Unity
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Località: Villabate(PA)
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da Vincenzo1968 » lunedì 4 novembre 2013, 17:05

UbuNuovo [url=http://forum.ubuntu-it.org/viewtopic.php?p=4478847#p4478847][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:rileggendolo... forse è meglio (fino alla corrispondenza più vicina...)
o meglio
"seguito dalla corrispondenza più vicina..."
Che ne pensi?

p.s: .per fargli usare le "libpcre3", grep andrebbe ricompilato con "--with-pcre"
Così?:

Codice: Seleziona tutto

[vincenzo]$ ./retoit 'a.*?a'

L'espressione regolare 'a.*?a' si legge:

'a'
seguito da zero o più qualunque carattere tranne nuova linea(seguito dalla corrispondenza più vicina di 'a')
È ormai difficile incontrare un cretino che non sia intelligente e un intelligente che non sia un cretino. [...] Oh i bei cretini di una volta! Genuini, integrali. Come il pane di casa. Come l'olio e il vino dei contadini. (da "Nero su nero" di Leonardo Sciascia)

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3705
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatti:

Re: [Progetto] Programma per tradurre una regexp in italiano

Messaggio da UbuNuovo » lunedì 4 novembre 2013, 17:08

Si daccordo per le parentesi.
L'ambiguità può derivare dal "fino":
" fino alla corrispondenza più vicina " qualcuno si può chiedere compresa o esclusa?
Per questo motivo dopo ho messo "seguita dalla corrispondenza più vicina..."
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Scrivi risposta

Ritorna a “Progetti della Comunità”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite