Visual Basic.NET - AYUDA REGULAR EXPRESSION

   
Vista:

AYUDA REGULAR EXPRESSION

Publicado por Diego (11 intervenciones) el 04/10/2009 05:34:45
Hola Gente,

Necesitaria ayuda con la creacion de una expresion regular.

El texto a parsear seria el seguiente, por ejemplo:

CREATE TABLE [dbo].[CAJA] (
[CajaConcepto] [char] (50) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[CajaFecha] [datetime] NOT NULL ,
[CajaResultado] [char] (10) COLLATE Modern_Spanish_CI_AS NULL ,
[CajaPrecio] [money] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[CLIENTES] (
[NumClie] [int] NOT NULL ,
[ClienteTicketId] [smallint] NOT NULL ,
[ClienteServicioId] [smallint] NOT NULL ,
[ClienteTicketFecha] [datetime] NULL
) ON [PRIMARY]
GO

Yo quisiera tener como resultado el primer bloque

CREATE TABLE [dbo].[CAJA] (
[CajaConcepto] [char] (50) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[CajaFecha] [datetime] NOT NULL ,
[CajaResultado] [char] (10) COLLATE Modern_Spanish_CI_AS NULL ,
[CajaPrecio] [money] NULL
) ON [PRIMARY]

probe la siguiente regex pero no funciona, Mi Problema es no saber como trabajar con multilines.

\bCREATE\b.*\bTABLE\b.*PRIMARY

Espero su ayuda.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA REGULAR EXPRESSION

Publicado por JoanF (129 intervenciones) el 04/10/2009 23:56:17
Hola,

Si solo buscas la primera SELECT del bloque puedes usar un simple SPLIT por la palabra GO en vez de complicarte con expresiones regulares. Seria:

Dim sentenciaAObtener As String
Dim separador() As String = New String() {"GO"}

sentenciaAObtener = sentenciaSelect.Split(separador, StringSplitOptions.None)(0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA REGULAR EXPRESSION

Publicado por JoanF (129 intervenciones) el 05/10/2009 05:29:30
Hola,

Quizás te podría ayudar más si me puedes indicar los motivos por los que necesitas utilizar una expresión regular.

En todo caso, para evitar problemas con los saltos de linea puedes forzar el modo "single line" donde . equivale a cualquier carácter, incluido el salto de linea. A partir de aquí si que es ir probando expresiones, empezando como bien haces con un "CREATE .* \[PRIMARY\]" y probar hasta que obtengas la expresión que te dé el resultado que quieras.

Para más recursos, esta la pagina http://regexlib.com/ donde puedes obtener más ideas y incluso tiene una pagina de test de expresiones donde puedes realizar pruebas en http://regexlib.com/RETester.aspx

Como te he dicho antes, desconozco los motivos por los que has de usar una expresión regular, pero es mucho mas simple usar un SPLIT, incluso con expresiones regulares, como por ejemplo:

Dim evaluador As System.Text.RegularExpressions.Regex
Dim resultados() As String
Dim sentenciaAObtener As String

evaluador = New System.Text.RegularExpressions.Regex("GO")

resultados = evaluador.Split(sentenciaSelect)
If resultados.Length > 0 Then
sentenciaAObtener = resultados(0)
Else
'no hay ninguna sentencia
sentenciaAObtener = ""
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA REGULAR EXPRESSION

Publicado por Diego (11 intervenciones) el 05/10/2009 14:16:11
Muchas gracias por la respuesta, el motivo de usar regex es solo para aprender a usarlas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar