C# e regular expressions

domenica 05 luglio 2009 - 16.04

gerald81 Profilo | Newbie

Ciao Ragazzi, devo chiedervi la cortesia di aiutarmi a risolvere un grattacapo con le regular expressions.

In sostanza, ho un testo di questo tipo:
${P9,}{.}{S9}
oppure
${P9,}
cioè è composto da uno o più gruppi di parentesi graffe {} nel quale interno possono esserci uno o più caratteri.

Quale pattern devo utilizzare per isolare i gruppi di {}? per esempio, devo ottenere da ${P9,}{.}{S9} i gruppi
{P9,}
{.}
{S9}

Grazie per la vostra disponibilità

A presto


Jeremy Profilo | Guru

Ciao.
prova con questo
"\{[\w\d,\.]+\}"

Fai tu le modifiche del caso specifico .....

Facci sapere...
Ciao

gerald81 Profilo | Newbie

Grazie, funziona alla perfezione, sei stato gentilissimo.

Nel mentre, ho provato che con il pattern
{.}|{..}|{...}
ottengo cmq il risultato che desideravo, saresti così gentile da spiegarmi la logica della tua regexp?

Grazie in anticipo.

Jeremy Profilo | Guru

Ciao
>ottengo cmq il risultato che desideravo, saresti così gentile
>da spiegarmi la logica della tua regexp?
Si certo .... innanzitutto ti dico che, il tuo pattern, potrebbe non essere del tutto corretto, in quanto il punto corrisponde a "tutti i caratteri escluso l'acapo", pertanto potrebbe includere le parantesi graffe come carattere.....l'altro motivo lo capirai di seguito.

Vengo alla spiegazione del mio pattern.
\{ .... la backslash, serve a rappresentare un carattere speciale come carattere semplice, pertanto, essendo la barra graffa un carattere speciale che indica il numero di occorenze da valutare (insieme a }) , serve la backslash per interpretarlo come carattere semplice.

\w .... valuta UN carattere alfanumerico od UN underscore

\d .... valuta UNA cifra decimale

, .... la virgola, non serve che te la spiego

\. .... il punto preceduto dalla backslash, vale lo stesso discorso delle graffe.

[] .... tutti le espressioni inserite all'interno delle parentesi quadre, vengono sottoposte a OR, quindi o UN carattere alfanumerico od UNA cifra decimale od UNA virgola od UN punto

+ .... Indica "Una o più occorrenze", per questo, se noti,sopra ho scritto in maiuscolo UN e UNA

\} .... stesso dicorso per \{

Se avessi anche la necessita di individuare una stringa del tipo {} , dovresti sostituire il + con * ..... il perchè, lo lascio cercare a te

Spero di essere stato suffcientemente esaustivo ....
Ciao


gerald81 Profilo | Newbie

Ok grazie mille.
A presto.


Gerald81.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5