Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [PHP] [REG-EXP] help

  1. #1

    [PHP] [REG-EXP] help

    Salve a tutti..
    qualcuno sa dirmi se č possibile fare una cosa del genere attraverso le espresisoni regolari, non trovo nulla al riguardo...
    $reg_exp = "/A(group)B/is";
    io vorrei trovare group dove group č qualunque cosa purchč non contenga al suo interno un altro gruppo, chiamiamolo C.
    A livelli di singoli caratteri non ho problemi a cercare tutti i diversi da, ma a livello di gruppi inclusi si puo' fare?
    Grazie in anticipo a tutti.
    =======================
    http://www.abidibo.net

  2. #2
    Non ho capito cosa ti serve, puoi fare un esempio di cosa vuoi trovare e uno di cosa invece non vuoi trovare?

  3. #3
    ci provo, allora
    Codice PHP:
    $phrase = (gruppoA)testo (gruppo lala(gruppoB)altro testo(gruppoA)trallalalalala(gruppoB
    $reg_expr "help me";
    preg_match_all($reg_expr$phrase$linesPREG_SET_ORDER);
    /*
    * Io cerco la $reg_expr per ottenere 
    * $lines[0][indice che preferisci] = "testo (gruppo lala";
    * $lines[1][stesso indice che preferisci] = "trallalalalala";
    */ 
    Chiaramente l'"indice che vuoi" dipende da come si raggruppano i matching. Comunque il punto č che quel
    "(gruppo" mi da proprio fastidio, perchč ho due strutture (dove per struttura intendo (gruppoA) testo (gruppoB) nello stesso testo, quindi
    Codice PHP:
    $reg_exp "/\(gruppoA\)(.*)\(gruppoB\)/"
    non puo' andare perchč becco in $line[0][1]:
    testo (gruppo lala(gruppoB)altro testo(gruppoA)trallalalalala
    Allora dico, mettiamo cosi'
    Codice PHP:
    $reg_exp "/\(gruppo>\)([^\(]*)\(gruppoB\)/"
    perfetto, se non ci sono parentesi tonde all'interno della struttura, altrimenti come nell'esempio di frase che ho messo non trova nulla.
    Quindi io intendo che voglio considerare un gruppo (quello contenuto tra (gruppoA) e (gruppoB)) che non contenga al suo interno il gruppo di caratteri (gruppoB).
    Questo senza iniziare a scomporre in array, perchč cosė vedo la soluzione, ma vorrei sapere se si puo' fare con una sola reg exp.
    Spero si capisca qualcosa, grazie k.b.
    =======================
    http://www.abidibo.net

  4. #4
    Puntualizzo: anche se nelle regexp che ho scritto non appaiono strippati caratteri speciali (parentesi), in realtā sono strippati quindi quelle cose sono ok
    =======================
    http://www.abidibo.net

  5. #5
    Non credo di aver capito, perō ... comincia provando cosė:
    Codice PHP:
    $reg_exp "/(gruppoA)(.*?)(gruppoB)/"
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Se ho capito quello che ti serve e' il negative lookahead: cerca qualunque cosa purche' non sia (gruppoB).

    codice:
    <?php
    $phrase = "(gruppoA)testo (gruppo lala(gruppoB)altro testo(gruppoA)trallalalalala(gruppoB)";
    
    preg_match_all("#\(gruppoA\)(?!\(gruppoB\))(.*?)\(gruppoB\)#", $phrase, $match);
    
    print_r($match);
    ?>
    Puo' andare?

  7. #7
    Ciao Anakin grazie per la risposta. Qual č la funzione del punto interrogativo?
    =======================
    http://www.abidibo.net

  8. #8
    Originariamente inviato da abidibo
    Ciao Anakin grazie per la risposta. Qual č la funzione del punto interrogativo?
    E' un modificatore di criterio locale che dice alla regexp di fermarsi alla prima occorrenza che "chiude" il match. Altrimenti di default si fermerebbe solo all'ultima.
    Non so se č molto chiaro
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  9. #9
    Ok ragazzi grazie mille a tutti e due, entrambe le soluzioni mi sembrano perseguibili, quella di Anakin per il mio caso va meglio perchč piu' snella. Grazie ancora per le veloci risposte
    =======================
    http://www.abidibo.net

  10. #10
    Si in effetti l'ho fatta molto piu' complicata del necessario

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.