|
|
|
![]() |
|
Strumenti |
![]() |
#41 | |||
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Il backtracking non è una caratteristica degli nfa ma semplicemente una tecnica usata dalle varie librerie che implementano le regexp per trovare tutte le possibili soluzioni. Rileggiti articolo e libro che non hai capito bene. Quote:
![]() Quote:
La regexp dipende tantissimo dall'implementazione ma in java dovrebbe procedere così: 1. La parte iniziale "<title>" è composta da soli litteral. Può usare boyer-moore per cercare la prima occorrenza da cui partire con il match. Mi pare di ricordare che come algoritmo sia O(n/m) quindi più efficiente del normale automa. 2. Una volta trovato l'inizio del tag può fare la parte centrale di cattura del contenuto senza backtracking. [^<]+ è un semplice ciclo for. 3. Una volta catturato il contenuto esegue il test per "</title>" anche qui si tratta di soli litteral quindi ciclo for. 4. Se fa match riparte dal punto 1 partendo con la ricerca dopo </title> perché ormai il testo è stato consumato. Se non c'è stato parte dalla posizione successiva al <title> perché le () introducono backtracking. L'uso di boyer-moore per trovare l'inizio dei match ed il fatto che il resto equivale in sostanza ad un dfa mi fa pensare che la regexp potrebbe essere più performante o in sostanza equivalente. ![]() |
|||
![]() |
![]() |
![]() |
#42 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
![]() |
![]() |
![]() |
#43 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
|
|
![]() |
![]() |
![]() |
#44 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
![]() |
![]() |
![]() |
#45 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
https://github.com/knowitall/openregex
Implementation Regular expressions are evaluated using Thomson NFA, which is fast and not have the pathological cases that most regular exprsesion libraries have. For more information about Thomson NFA in comparison to recurseive backtracking, read http://swtch.com/~rsc/regexp/regexp1.html. Future work may involve compiling NFAs to DFAs. Future Work Compile to DFA. Use parser combinators for parsing regular expressions. ![]() |
![]() |
![]() |
![]() |
#46 | ||
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Quote:
|
||
![]() |
![]() |
![]() |
#47 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Minchia si, equivalenti sono(in un occhio si e in un occhio no):
![]() Proprio uguali uguali. ![]() RegExpVicius.java: Codice:
import java.util.regex.Pattern; import java.util.regex.Matcher; // <title>Mio libro</title><year>2012</year><home>Mia casa</home> public class RegExpVicius { public static void main(String[] args) { int x; String xml = "<title>Mio libro</title><year>2012</year><home>Mia casa</home>"; Pattern TITLE = Pattern.compile("<title>([^<]+)</title>"); x = 0; while ( x < 100000000 ) { Matcher matcher = TITLE.matcher(xml); while (matcher.find()) { if ( x < 3 ) System.out.println("Titolo: " + matcher.group(1)); } x++; } } } Codice:
import java.io.Console; public class RegExpVincenzo1968 { public static void main(String[] args) { int x; String xml = "<title>Mio libro</title><year>2012</year><home>Mia casa</home>"; CParser parser = new CParser(); x = 0; while ( x < 100000000 ) { if ( parser.Parse(xml) ) if ( x < 3 ) System.out.println(parser.GetValue()); x++; } } } http://www.hwupgrade.it/forum/showpo...96&postcount=7 Chi fosse interessato ai sorgenti mi contatti via pm ![]() Il mio dfa non è nemmeno ottimizzato. Non ho nemmeno minimizzato gli stati ![]() ![]() Vicius, Vicius! L'nfa è una illusione. L'nfa Java una doppia illusione.(semi cit.) ![]() EDIT: Non capisco perché mi si sminchia l'indentazione. Il codice è perfettamente indentato. Mah! ![]() Ultima modifica di Vincenzo1968 : 01-03-2013 alle 10:01. |
![]() |
![]() |
![]() |
#48 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2776
|
|
![]() |
![]() |
![]() |
#49 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#50 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
![]() Quindi io da me il codice lo vedo perfettamente indentato. Quando lo copincollo qui, evidentemente tutti quei tab a fine riga combinano il casino. |
|
![]() |
![]() |
![]() |
#51 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
Ultima modifica di Vincenzo1968 : 28-02-2013 alle 22:56. |
|
![]() |
![]() |
![]() |
#52 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Codice:
:1,$s/\t/ /g Dopo di che, scrivi: Codice:
:se expandtab
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#53 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
Per esempio: \tif (x > 0) me lo ritrovo così: \tif (x > 0)\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t Vedi tutti quei tab(\t) alla fine? È fastidioso anche quando debbo aggiungere del codice alla fine della riga. Mi sposto nella riga, premo il tasto "Fine" e mi ritrovo a millemila chilometri di distanza. Mi tocca eliminarli con backspace. Alla fine mi fa male il ditino. ![]() Non c'è modo, con Vim, di eliminare del tutto i tab a fine riga anziché sostituirli con spazi? Ma i tab all'inizio della riga me li deve lasciare. |
|
![]() |
![]() |
![]() |
#54 | |
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Quote:
Codice:
%s/\t*$//g
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
![]() |
![]() |
![]() |
#55 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Comunque:
http://infolab.stanford.edu/~ullman/ialc.html http://www.amazon.com/gp/product/032...27CA8DP7KDKZ87 ![]() Il testo tratta l'argomento da un punto di vista pratico, non formale. Se preferite qualcosa di più formale, più rigoroso, dovete procurarvi la prima edizione. Ma non è per tutti: dovete avere delle solide basi matematiche. Io, per esempio, non riuscirei a leggerlo. Occhio! Be careful! http://shop.oreilly.com/product/9780596528126.do ![]() Su quest'ultimo si veda: - il par. 4.6: NFA, DFA and POSIX - il par 4.6.3.1: DFA efficiency: you get consistent, clean power. ![]() |
![]() |
![]() |
![]() |
#56 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Ottimizzato codice.
![]() ![]() ![]() Nuovi tempi: ![]() ![]() NFA... ![]() |
![]() |
![]() |
![]() |
#57 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
http://www.hwupgrade.it/forum/showpo...&postcount=130
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:07.