+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

[C/C++] Espressione Regolare

  1. #1
    bidi84 non è in linea Novello
    Salve sono in difficoltà ho un compito da svolgere in linguaggio C solo che non ne conosco la soluzione.

    [
    Il problema è:
    Scrivere un programma che data una regular expression contenente uno o piu'
    punti ed un file di testo, scriva tutte le parole in cui ricorre
    la regular expression.


    Questo e' un testo di prova. Serve solo come esempio.
    Se ne possono trovare tanti altri con o senza senso.

    Se al programma do in input la regular expression

    se.

    dovrei avere in output:

    senza
    senso(contengono se)
    ]

    Il problema è che non so quali librerie usare ne quali funzioni usare per una regular expression.
    Qualcuno potrebbe gentilmente darmi una mano.

  2. #2
    L'avatar di albertonissa
    albertonissa non è in linea Topo di biblioteca
    ciao.. ti consiglio di studiare queste funzioni:
    strpbrk()
    strncmp()
    strcmp()
    strcspn()
    strspn()
    strchr()
    strstr()
    qui:
    www.cplusplus.com/ref/#libs

    [img]smileys/smiley2.gif[/img]
    ℹ️ Leggi di più su albertonissa ...

  3. #3
    L'avatar di Louis
    Louis non è in linea Scribacchino
    Ho trovato per VB6 - estrarre le parole con l'oggetto RegExp - non sò se è adattabile per il linguaggio C. Comunque ti posto un esempio di F. Balena:
    "Ottiene una collezione di tutte nle parole di una stringa. Se il 2° argomento è true vengono restituite sole le parole univoche.
    Richiede un riferimento alla type library Microsoft VBScript Regular Expression
    Function GetWords(By Text As String , Optional DiscardDups As Boolean) As Collection
    Dim re As New RegExp
    Dim ma As Match

    Il pattern seguente significa che si ricerca una lettera (\w) ripetuta una o più volte (il suffisso +) che si trova agli estremi di una parola (le sequenze \b iniziale e finale)
    re.Pattern = "\b\w+\b"
    ricerca *tutte* le occorrenze del pattern
    re.Global = True

    Inizializza il risultato
    Set GetWords = New Collection

    E' necessario ignorare gli errori, se bisogna eliminare i duplicati
    On Error Resume Next

    Il metodo Execute esegue la ricerca e restituisce un Oggetto MatchCollection
    For Each ma In re.Execute(Text)
    If DiscardDups Then
    Se bisogna eliminare i duplicati, basta aggiungere una chiave alla collezione ed il metodo Add si farà carico dell'operazione
    GetWords.Add ma.Value, ma.Value
    Else
    Altrimenti basta aggiungere al risultato
    GetWords.Add ma.Value
    End If
    End Function

    Ecco un esempio di come utilizzare questa routine:
    Conta quanti articoli appaiono in una stringa sorgente contenuta nella casella di testo TxtSource
    Dim v As Variant
    Dim count As Long

    For Each v In GetWords(txtSource.Text)
    Select Case LCase$(v)
    Case "the", "a", "an"
    count = count + 1
    End Select
    Next
    MsgBox "Found " & count & " articles. "

    Spero che possa servirti almeno come esempio da traslare in C
    Ciao.


    ℹ️ Leggi di più su Louis ...

  4. #4
    bidi84 non è in linea Novello
    Grazie anche se non è facile traslare in C ci proverò.

    Se qualcun altro a qualche altra idea Lo ringrazio da subito.

  5. #5
    L'avatar di albertonissa
    albertonissa non è in linea Topo di biblioteca
    ma volete tutto su un piatto d'argento? [img]smileys/smiley17.gif[/img] ok.. ti linko la pagina esatta dove trovi la funzione che fa quello che vuoi tu e un esempio:

    http://www.cplusplus.com/ref/cstring/strpbrk.html


    (tu potresti splittare il buffer in tante parole "space-spaced" e poi applicarlo a ognuna di loro)
    ℹ️ Leggi di più su albertonissa ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Info espressione regolare
    Da swim nel forum PHP
    Risposte: 0
    Ultimo Post: 03-04-2014, 18:27
  2. Regolare audio da C#
    Da panatronic nel forum C#
    Risposte: 2
    Ultimo Post: 16-04-2011, 14:20
  3. Eseguire codice a scadenza regolare
    Da Ciuolo nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 13-07-2010, 21:18
  4. Risposte: 2
    Ultimo Post: 21-04-2009, 19:36
  5. regolare dimensione di 2 Richtext
    Da cristiano2004 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 18-03-2005, 12:35