Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Solite reg_expr....

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    Solite reg_expr....

    Siamo alle solite... ogni volta che devo estrarre un testo non ci capisco una mazza con 'ste regular_expression....

    Qualcuno puo' darmi una mano?

    Allora dato il testo:
    codice:
    WS-C6506 Software, Version NmpSW: 7.2(2)
    Copyright (c) 1995-2002 by Cisco Systems
    NMP S/W compiled on Apr 25 2002, 12:37:52
    
    System Bootstrap Version: 5.3(1)
    
    Hardware Version: 3.0  Model: WS-C6506  Serial #: TBA1234567899
    
    PS1  Module: WS-CAC-1300W    Serial #: ACP0xxxxxxx
    PS2  Module: WS-CAC-1000W    Serial #: ACP0xxxxxxx
    
    Mod Port Model               Serial #    Versions
    --- ---- ------------------- ----------- --------------------------------------
    1   2    WS-X6K-SUP1A-2GE    SAD0xxxxxxx Hw : 7.0
                                             Fw : 5.3(1)
                                             Fw1: 5.4(2)
                                             Sw : 7.2(2)
                                             Sw1: 7.2(2)
             WS-F6020A           SAD0xxxxxxx Hw : 2.0
    2   48   WS-X6248A-TEL       SAL0xxxxxxx Hw : 2.0
                                             Fw : 5.4(2)
                                             Sw : 7.2(2)
    3   48   WS-X6248A-TEL       SAL0xxxxxxx Hw : 2.0
    io vorrei ricavare quei numerini li':
    WS-C6506
    e poi
    TBA12345678999

    Poi dopo mi servirà pure quei numerini SAD0xxxxxxx ovviamente abbinati al suo numero di fianco come WS-F6020A ma quello ci penso dopo.

    Ora devo ricavare quei due:
    WS-C6506
    e poi
    TBA12345678999

    Allora ecco come ci ho provato:

    codice:
    eregi("Model: (.+)Serial #:",$result,$mod);
    echo "$mod[1] ";
    (lo spazio fra
    -->Model: (.+)<--
    l'ho aggiunto ora per non far interpretare dal forum in ; sul mio codice non c'e')

    ed ecco cosa mi scrive:

    codice:
    WS-C6506  Serial #: TBA1234567899
    
    PS1  Module: WS-CAC-1300W    Serial #: ACP0xxxxxxx
    PS2  Module: WS-CAC-1000W
    Troppa grazia!
    A me serve solo la prima riga anzi in questo caso solo i primi 8 caratteri (si, lo so, potrei spezzarlo con substr() ma alcune file di testo sorgenti potrebbero avere + di 8 caratteri!)

    Dove sbaglio?
    cioe' perchè mi da cosi' tanto?


    Altra cosa.
    I miei file sorgenti da lavorare hanno dei CR (ritorni a capo) e sono sempre ben formattati per far apparire nello stesso posto le stesse info.
    Non è possibile fare una ricerca di contenuti tipo tramite posizione x e y nel testo?
    Cioè io so per certo che alla riga 10 alla posizione 37 c'e' una parola che mi interessa. Con le reg_expr o con altro metodo non posso estrarre direttamente da li'?

    Grazie a tutti per la pazienza ed attenzione!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188

    UP

    Scusate se riesumo l'argomento, ma ho trovato anche questa pillola:

    http://forum.html.it/forum/showthrea...hreadid=705596

    che dice che sostanzialmente il mio codice è esatto ovvero:

    codice:
    eregi("prima del carcato"(.+)"dopo il cercato",$dove,$risultato);
    Ma a me non isola dal contesto il solo testo che mi interessa...

    Ho provato anche a toliere i # e : nel caso fossero caratteri riservati (ma non risulta dalle guide regex).

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    residenza
    Milano
    Messaggi
    188
    Ehm... faccio progressi da solo...

    facendo un bel po' di test ho capito perchè mi risponde cosi' tanto... la regexpr infatti confronta e trova l'ultima corrispondenza di Serial #: e quindi include tutto il mezzo.

    Interessante, ma perchè prende l'ultima corrispondenza che trova?
    La documentazione sulle reg_expr non spiega specificatamente se usa il primo o l'ultimo match, ma sottointende il primo....

    Ok, passiamo alla pratica... come risolvere il mio problema cioè restuire solo WS-C6506?

  4. #4
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

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.