Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    14

    Aiuto su semplice espressione regolare

    Ciao a tutti, vi espongo il mio problema. In pratica devo recuperare da un documento html delle stringhe. Per esempio se voglio prendere la stringa in rosso:

    ....onmousedown="return clk(this.href,'','res','3')">Mi piace tanto la cioccolata</a></h3></div>.....

    Ho provato questa espressione regolare:
    regex1 = "'res','\\d*'\\)\">(\\w|\\s)*</a>";

    Purtroppo non mi matcha niente nel documento. Dove sbaglio?

    Ovviamente il campo res è messo a \\d* perchè varia nel documento.

    Grazie per l'aiuto.

  2. #2
    Prova così:

    codice:
    regex = "'res','\\d+'\\)\\\">(\\w|\\s)*</a>";
    Ovviamente migliorabile.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    14
    Originariamente inviato da satifal
    Prova così:

    codice:
    regex = "'res','\\d+'\\)\\\">(\\w|\\s)*</a>";
    Ovviamente migliorabile.
    Ho provato ma non trova ancora niente.

  4. #4
    l'ho provata prima di postarla e funziona perfettamente. Ti posto il codice che ho utilizzato per testarla:

    codice:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class TestMain {
    
    	public TestMain() {
    		test1();
    	}
    	
    	private void test1() {
    		String regex = "'res','\\d+'\\)\\\">(\\w|\\s)*</a>";
    		String input = "onmousedown=\"return clk(this.href,'','res','3')\">Mi piace tanto la cioccolata</a></h3></div>";
    
    		Pattern pattern = Pattern.compile(regex);
    		Matcher matcher = pattern.matcher(input);
    
    		while (matcher.find()) {
    			System.out.println(matcher.group());
    		}
    	}
    	
    	public static void main(String[] args) {
    		new TestMain();
    	}
    
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    14
    In effetti hai ragione , il tuo funziona.

    Ma nel mio codice non me lo vede. Ti posto la funzione che uso.
    Alla funzione passo un BufferedReader contenente la pagina html letta dalla connessione.

    codice:
    public static void citeFinder(BufferedReader in) {
      
      String regex1 = "'res','\\d+'\\)\\\">(\\w|\\s)*</a>";	
      Pattern pattern1 = Pattern.compile(regex1); 
      String title, line = "";
      Matcher matcher1;
    
      try {
        while ((line = in.readLine()) != null) {
          matcher1 = pattern1.matcher(line);
          while(matcher1.find()) {
        	title = matcher1.group(); 
        	System.out.println(title);}
          }
      } catch (IOException ioe) {
        System.err.println(ioe);
        System.exit(1);
      }
    Il problema ce l'ho quando aggiungo gli apici. Infatti se :
    regex1= "res" -> mi vengono trovati tutti i res
    Se invece:
    regex1= "'res'" -> non mi viene trovato nulla

    Può essere un errore di codifica?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    14
    ah ho capito l'errore. Nel BufferedRead il file viene letto in maniera diversa dal html sorgente. Me ne sono accorto salvando il buffer in un file.

    in pratica ora devo trovare queste stringhe:

    .....<h3>Mi piace tanto la cioccolata</h3>...

    Devo riuscire a prelevare tutti i titoli (in questo caso "Mi piace tanto la cioccolata") dal documento. Tutti i titoli sono contenuti nel tag h3 con href diversi.

    Che espressione logica posso usare? Come mi consigliate di procedere?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    14
    Ragazzi nessuno sa aiutarmi?

    Mi basterebbe anche prendere la stringa :

    <h3>...................</a>

    E poi tramite cancellazioni e sostituzioni ricavarmi il titolo. Sarebbe una buona soluzione?

    Come faccio a dire all'espressione regolare di prendere tutto quello che c'è in mezzo?

    regex = "<h3>[cosa scrivo qui?]</a>"

  8. #8
    Puoi fare così:

    Codice PHP:
    String test "<h3><a href=\"http://www.cioccol-st.com\">Mi piace tanto  la cioccolata</a></h3>";
    System.out.println(test.replaceAll("(<[^<]+?>)""")); 

    Quella espressione regolare però ti estrapola tutti i tag. Magari puoi adattarla e controllare solo i tag <h3>
    Al mio segnale... scatenate l'inferno!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.