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

    errore espressione regolare per per espressione

    Ciaoo ,dovrei leggere delle righe che rappresentano un espressione matriciale:
    (A(BC)R)
    (AVB)
    ((RT)H(SD))
    ...
    sono composti solo da parentesi e Lettere maiuscole,quindi niente numeri o altro ... sto utilizzando le espr regolari ma non essendo esperto devo avere sbagliato il pattern ,mi aiutate gentilmente:

    Pattern patternLetturaRiga= Pattern.compile("[(]([(][A-Z]+[)])*[)]");

  2. #2
    ciao,
    I tre puntini mi fanno dedurre che tu voglia poter matchare tutte le possibili espressioni matriciali corrette e non solo un insieme finito di queste. In questo caso sappi che le espressioni regolari non sono abbastanza potenti. Il problema del riconoscimento di un espressione con parentesi ben bilanciate richiede almeno un automa a pila ed un automa a stati finiti (che e' l'automa che riconosce espressioni regolari) non e' sufficiente.

  3. #3
    Cioè per riconoscere una stringa con un insieme di parentesi che racchiudono lettere o altre parentesi a sua volta con lettere.. e cosi via..non posso scrivere una espressione regolare per verificare la correttezza e generare un eccezione nel caso contrario??

  4. #4
    Esatto. A meno che tu non faccia assunzioni sulla lunghezza della stringa (ad esempio: tutte le stringhe che racchiudono lettere e/o parentesi bilanciate e che non sono piu' lunghe di 20 caratteri). Nel qual caso l'espressione regolare si riduce all'unione delle varie possibili stringhe (nota che tali possibilita' anche se sono ben piu di 20 sono comunque finite).

    Se la lunghezza della stringa e' indeterminata allora le espressioni regolari non sono abbastanza potenti. Ti serve una grammatica libera dal contesto. L'esempio 2 dovrebbe essere simile a quello che vuoi ottenere tu. Diciamo che la difficolta' con le espressioni regolari sta nello stabilire quando le parentesi sono bilanciate e quando no.

    Il che, senza entrare troppo nella teoria, significa che fai prima a farti una funzioncina stupida in Java tu. Altrimenti dovresti utilizzare un analizzatore lessicale.

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.