Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Aiuto espressioni regolari

    Salve,

    Mi sto battendo duramente con le espressioni regolari per creare un parser per vCard, sono riuscito a far funzionare tutto ma c'è un piccolissimo errore che mi scombina tutto.

    Ho questo testo:
    codice:
    N:cognome;nome;secondo nome;prefisso;suffisso
    e devo estrarre tutti i vari oggetti (N,nome,cognome,ecc.) e per farlo usa questa regex:
    codice:
    (\n(?<strElement>(N)))   (: (?<strSurname>([^;]*))) (;(?<strGivenName>([^;]*)))  (;(?<strMidName>([^;]*))) (;(?<strPrefix>([^;]*))) (;(?<strSuffix>[^\n\r]*))
    tutto funziona però spesso se non viene inserito un secondo nome o un altro oggetto l'editor non sempre inserisce il ';' e quindi potrei trovarmi di fronte a situazioni così:
    codice:
    N:cognome;nome
    e a questo punto viene estratto oltre che alla stringa 'nome' anche il terminatore di riga e tutta la linea sottostante finchè non trova un ';'.

    Io vorrei dire al motore regex di prendere ogni oggetto fino a un ';' oppure fino al terminatore riga.

    Come posso fare?

    Grazie mille
    nothing is absolute, but everything is relative | My web site http://marcoronchese.net | My web blog http://blog.marcoronchese.net

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    prova questo

    try {
    Regex regexObj = new Regex(@"[\w\s]*[\w\s\t\r\n]]");
    Match matchResults = regexObj.Match(subjectString);
    while (matchResults.Success) {
    // matched text: matchResults.Value
    // match start: matchResults.Index
    // match length: matchResults.Length
    matchResults = matchResults.NextMatch();
    }
    } catch (ArgumentException ex) {
    // Syntax error in the regular expression
    }
    I got the remedy

  3. #3
    la regola è quella ma nel mio caso specifico? dovrei dirgli fermati a ';' oppure a fine riga e quindi trasformare:

    codice:
    (;(?<strGivenName>([^;]*)))
    in cosa? ho provato a fare così ma senza alcun risultato!

    codice:
    (;(?<strGivenName>([^;\n\r ]*)))
    nothing is absolute, but everything is relative | My web site http://marcoronchese.net | My web blog http://blog.marcoronchese.net

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.