Autor
|
Tema: Problema con IsMatch en Regex (Leído 11,329 veces)
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
A ver te explico lo de las MsgBox que es lo que más me incumbe...
Se supone que por cada reemplazo que haga se tiene que registrar luego en un log, como en el Anti-malware bytes... Pero claro... Si le meto aquí: Case Result.StartsWith("""") AndAlso Result.EndsWith("""") algún Value o un File append, StreamWriter que luego vaya al Log, por cada cual que empiece y termine por comillas, lo va a registrar en el Log como que se ha reemplazado, pero claro, y si no hubiese hecho el reemplazo? Meto un If Result.Was Replaced Then nananana.TofileAppend etc etc Como saco yo si lo ha hecho o no... Por eso lo de las MsgBox... A ver si ahora lo pillas...
|
|
« Última modificación: 3 Agosto 2013, 00:02 am por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Usa un Boolean y cambia al estado True/False cuando reemplazes, así sabrás si has reemplazado o no lo has hecho...
Saludos
|
|
« Última modificación: 3 Agosto 2013, 00:24 am por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Ahá... Select Case True Case Result.StartsWith("'") AndAlso Result.EndsWith("'") Dim posResultado = Result Dim preResultado = String.Format("'{0}'", Result.Substring(1, Result.Length - 2).Replace("'", "\'")) MsgBox(preResultado) If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Result.StartsWith("'") AndAlso Not Result.EndsWith("'") Dim posResultado = Result Dim preResultado As String = String.Format("'{0}", Result.Substring(1, Result.Length - 1).Replace("'", "\'")) MsgBox(preResultado & "'") MsgBox("Msg: #2 (String arreglada; Error #1: [Faltaba la última comilla])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Not Result.StartsWith("'") AndAlso Result.EndsWith("'") Dim posResultado = Result Dim preResultado As String = Result.Replace("'", "\'") MsgBox("'" & preResultado) MsgBox("Msg: #2 (String arreglada; Error: #2: [Faltaba la primera comilla])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Not Result.StartsWith("'") AndAlso Not Result.EndsWith("'") AndAlso Result.Contains("'") Dim posResultado = Result Dim preResultado As String = String.Format("{0}", Result.Replace("'", "\'")) MsgBox("'" & preResultado & "'") MsgBox("Msg: #2 (String arreglada; Error: #3: [Faltaban las comillas de extremos])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If '----------------------- Case Result.StartsWith("""") AndAlso Result.EndsWith("""") Dim posResultado = Result Dim preResultado = String.Format("""{0}""", Result.Substring(1, Result.Length - 2).Replace("""", "\""")) MsgBox(preResultado) If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Result.StartsWith("""") AndAlso Not Result.EndsWith("""") Dim posResultado = Result Dim preResultado As String = String.Format("""{0}", Result.Substring(1, Result.Length - 1).Replace("""", "\""")) MsgBox(preResultado & """") MsgBox("Msg: #2 (String arreglada; Error #1: [Faltaba la última comilla])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Not Result.StartsWith("""") AndAlso Result.EndsWith("""") Dim posResultado = Result Dim preResultado As String = Result.Replace("""", "\""") MsgBox("""" & preResultado) MsgBox("Msg: #2 (String arreglada; Error: #2: [Faltaba la primera comilla])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Not Result.StartsWith("""") AndAlso Not Result.EndsWith("""") AndAlso Result.Contains("""") Dim posResultado = Result Dim preResultado As String = String.Format("{0}", Result.Replace("""", "\""")) MsgBox("""" & preResultado & """") MsgBox("Msg: #2 (String arreglada; Error: #3: [Faltaban las comillas de extremos])", MsgBoxStyle.Information, "Información") If Not preResultado = posResultado Then MsgBox("Msg: #1 (String Cambiada)", MsgBoxStyle.Information, "Información") End If Case Else MsgBox(Result) End Select
Yo he usado un If, si quieres mejorar mi Snippet... Pues mejor... Para dudas que estén dentro de este code, pero no tenga que ver con el Regex ni el IsMatch, creo un nuevo topic o con este ya vale?
|
|
« Última modificación: 3 Agosto 2013, 13:41 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Yo he usado un If, si quieres mejorar mi Snippet... Pues mejor... Usa un Boolean y cambia al estado True/False cuando reemplazes, así sabrás si has reemplazado o no lo has hecho... Repites en 24 lineas exáctamente el mismo código... Dim IsValueReplaced as boolean = false private sub ()... Select Case True Case loquesea IsValueReplaced = true Dim Resultado = String.Format("'{0}'", Result.Substring(1, Result.Length - 2).Replace("'", "\'")) MsgBox(Resultado) Case loquesea 2 IsValueReplaced = true Dim Resultado As String = String.Format("'{0}", Result.Substring(1, Result.Length - 1).Replace("'", "\'")) MsgBox(Resultado & "'") Case loquesea 3 IsValueReplaced = true Dim Resultado As String = Result.Replace("'", "\'") MsgBox("'" & Resultado) ' More Cases... Case Else MsgBox(Result) End Select If IsValueReplaced Then MessageBox.Show("Msg: #1 (String Cambiada)", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) IsValueReplaced = false end sub
Saludos
|
|
« Última modificación: 3 Agosto 2013, 14:22 pm por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Una duda, así de cerca... Y sin probar nada...
Si meto ese code en primer Case que es solo comprobar si tiene comillas al principio y al final... No va a cambiar siempre que se cumpla esa condición y no cuando se reemplace...?
|
|
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
No entiendo tu pregunta (para variar), pero si te lo pongo es por algo.
el código que está fuera del select case sucede independientemente de las condiciones que se hayan dado... así que si el valor se ha reemplazado pues mostrará el msgbox... ... y al final del bloque siempre se reinicia la variable a False, así que...no hay problemas...
practícalo un poco....
saludos
|
|
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Código final: Dim lines As String() = File. ReadAllLines(TextBox1. Text) Dim MaxCommas As Integer = CountCharacter(lines(0), ",") Dim TimesSplitted As Integer = 0 For Each Result As String In Regex.Split(Line, ",|\n") Select Case True Case Result.StartsWith("'") AndAlso Result.EndsWith("'") Dim posResultado = Result Dim preResultado = String.Format("'{0}'", Result.Substring(1, Result.Length - 2).Replace("'", "\'")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write(preResultado & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Result.StartsWith("'") AndAlso Not Result.EndsWith("'") Dim posResultado = Result Dim preResultado As String = String.Format("'{0}", Result.Substring(1, Result.Length - 1).Replace("'", "\'")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write(preResultado & "'" & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error #1: [Faltaba la última comilla])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Not Result.StartsWith("'") AndAlso Result.EndsWith("'") Dim posResultado = Result Dim preResultado As String = Result.Replace("'", "\'") Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write("'" & preResultado & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #2: [Faltaba la primera comilla])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Not Result.StartsWith("'") AndAlso Not Result.EndsWith("'") AndAlso Result.Contains("'") Dim posResultado = Result Dim preResultado As String = String.Format("{0}", Result.Replace("'", "\'")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write("'" & preResultado & "'" & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #3: [Faltaban las comillas de extremos])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If '----------------------- Case Result.StartsWith("""") AndAlso Result.EndsWith("""") Dim posResultado = Result Dim preResultado = String.Format("""{0}""", Result.Substring(1, Result.Length - 2).Replace("""", "\""")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write(preResultado & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Result.StartsWith("""") AndAlso Not Result.EndsWith("""") Dim posResultado = Result Dim preResultado As String = String.Format("""{0}", Result.Substring(1, Result.Length - 1).Replace("""", "\""")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write(preResultado & """" & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error #1: [Faltaba la última comilla])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Not Result.StartsWith("""") AndAlso Result.EndsWith("""") Dim posResultado = Result Dim preResultado As String = Result.Replace("""", "\""") Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write("""" & preResultado & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #2: [Faltaba la primera comilla])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Not Result.StartsWith("""") AndAlso Not Result.EndsWith("""") AndAlso Result.Contains("""") Dim posResultado = Result Dim preResultado As String = String.Format("{0}", Result.Replace("""", "\""")) Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write("""" & preResultado & """" & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #3: [Faltaban las comillas de extremos])") If Not preResultado = posResultado Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") End If Case Else Try If File. Exists(PathArchivo3 ) Then strStreamW = File. Open(PathArchivo3, FileMode. Append) Else strStreamW = File. Create(PathArchivo3 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) Dim Splittado As String = Nothing TimesSplitted += 1 If TimesSplitted = MaxCommas Then Splittado = Environment.NewLine ElseIf TimesSplitted < MaxCommas Then Splittado = "," End If strStreamWriter.Write(Result & Splittado) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try End Select Next Result
Voy a comer y pruebo tu code
|
|
« Última modificación: 3 Agosto 2013, 14:54 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
No sé ni para que me molesto en explicarte técnicas de simplificación de código si sigues haciendo lo mismo con el streamwritter, y todas las variables e if's que hay alrededor...
¿No entiendes que todo ese código que repites 100 veces lo puedes usar para todos los Cases sin tener que repetirlo dentro de cada Case?
EDITO: de 78 lineas (sin simplificar) has pasado a 358 (igual)
Cada uno que programe como quiera... eres libre, pero yo por mi parte me rindo, no aporto más a este tema, saludos!
|
|
« Última modificación: 3 Agosto 2013, 14:59 pm por EleKtro H@cker »
|
En línea
|
|
|
|
z3nth10n
Desconectado
Mensajes: 1.583
"Jack of all trades, master of none." - Zenthion
|
Voy a comer y pruebo tu code Pues esperate bicho! Ara vengo...
Tengo un problema en el Split cuando se trata de nuevas líneas si hay comillas, por alguna razón hace esto: ...NULL, NULL, 'Final de una línea\' '12334, NULL, 'Nueva línea jodida', NULL... Que puedo hacer? Mejor explicado:A ver, tengo este input: http://pastebin.com/7LFYfVnCEste output final de dos archivos: http://pastebin.com/bdENKrqW (INSERTS.sql) y http://pastebin.com/4NXwBnZz (Variables.sql) Y este output (supuestamente arreglado): http://pastebin.com/qc2FUXGTComo puedes observar, todas las líneas finales que acaben por comilla están jodidas, a ver si puedes arreglar algo tu, o por lo menos decirme lo que está mal puesto... Estoy intentando arreglarlo con este code: Dim ContentFile As String = File. ReadAllText(PathArchivo3 ) Dim prefinalText As String = Regex.Replace(ContentFile, ".[']$\n[']", "'") Dim finalText As String = Regex.Replace(prefinalText, "\n", "") Try If File. Exists(PathArchivo4 ) Then strStreamW = File. Open(PathArchivo4, FileMode. Append) Else strStreamW = File. Create(PathArchivo4 ) End If strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.Default) strStreamWriter.Write(finalText) strStreamWriter.Close() strStreamW = Nothing strStreamWriter = Nothing Catch ex As Exception TextBox3.AppendText("Error al Guardar la información en el archivo. " & ex.ToString) strStreamWriter.Close() End Try
Este es el code general: http://pastebin.com/ZSpJ8gczSiiiii, todavía me faltan poner las Booleans luego al final de todo se las pongo...
Ya he arreglado todo, ahora solo me falta lo de las booleans y el log!
No he usado Booleans, he usado esto: If remError = "1" Then ElseIf remWarning = "1" Then ElseIf remMsg = "1" Then TextBox3.AppendText(Environment.NewLine & "Msg: #1 (String Cambiada)") ElseIf remError = "1" Then TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error #1: [Faltaba la última comilla])") ElseIf remError = "2" Then TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #2: [Faltaba la primera comilla])") ElseIf remError = "3" Then TextBox3.AppendText(Environment.NewLine & "Msg: #2 (String arreglada; Error: #3: [Faltaban las comillas de extremos])") ElseIf remError = "4" Then TextBox3.AppendText(Environment.NewLine & "Error al Guardar la información en el archivo. ") End If remError = Nothing remWarning = Nothing remMsg = Nothing
Es un sistema parecido...
|
|
« Última modificación: 3 Agosto 2013, 20:55 pm por Ikillnukes »
|
En línea
|
⏩ Interesados hablad por Discord.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOURCE] RegEx .NET
.NET (C#, VB.NET, ASP)
|
Eleкtro
|
3
|
4,138
|
11 Septiembre 2013, 16:53 pm
por Eleкtro
|
|
|
[Solucionado]Duda con regex
« 1 2 »
Java
|
.:UND3R:.
|
14
|
7,847
|
26 Noviembre 2013, 21:05 pm
por .:UND3R:.
|
|
|
Orden de regex en java
Java
|
.:UND3R:.
|
2
|
1,955
|
26 Noviembre 2013, 23:35 pm
por .:UND3R:.
|
|
|
php no soporta regex complejo
PHP
|
franfis
|
6
|
3,275
|
30 Marzo 2014, 15:22 pm
por franfis
|
|
|
Ayuda con Regex
Programación General
|
BlackM4ster
|
0
|
1,859
|
19 Abril 2014, 14:17 pm
por BlackM4ster
|
|