2009-02-04 14 views

Respuesta

0

simple como:

^:: 
1
^::.*[\r\n]* 

Si estás leyendo la línea por línea archivo que no necesitarán la parte [\r\n]*.

8

Las expresiones regulares no "hacen" nada. Solo coinciden con el texto.

Lo que quiere son algunas herramientas que utilizan expresiones regulares para identificar una línea y luego aplicar algún comando a esas herramientas.

Una de estas herramientas es sed (también hay awk y muchas otras). Se podría utilizar de esta manera:

sed -e "/^::/d" <input.txt> output.txt 

La parte "/^::/" cuenta sed aplicar el siguiente comando para todas las líneas que comienzan con "::" y "d" significa simplemente "borrar esa línea".

O la solución más simple (que mi cerebro no produjo por alguna extraña razón):

grep -v "^::" input.txt > output.txt 
+0

Creo que has olvidado la función Regex.Replace ... Eso realmente "hace" algo, ¿no? – Dscoduc

+0

@Dcoduc: como dijiste: la función hace algo (es una de las herramientas que mencioné). La expresión regular en sí misma solo coincide con texto. Es la semántica de la función que define qué se debe hacer con el texto coincidente. –

+0

Gracias por la aclaración ... Estoy corregido ... – Dscoduc

2
sed -i -e '/^::/d' yourfile.txt 
+0

Creo que esta es quizás la mejor respuesta, pero vale la pena mencionar que no todas las versiones de sed tienen una opción -i. – oylenshpeegul

0

Si usted no tiene sed o grep, encontrar esto y reemplazarlo con una cadena vacía:

^::.*[\r\n] 
0

Gracias por los punteros:

lo siguiente trabajaron para mí.Después de "::" cualquier carácter fue possiblly presente en el archivo de texto así que le di:

^:: [a-zA-Z0-9 pongo todos los símbolos de puntuación aquí] * $

-AD

+0

no es necesario que coincida con nada después de la inicial^:: En su ejemplo, se ve obligado a "dar cuenta" de todos los caracteres porque coloca $ al final. – Manu

+0

Si usa una herramienta orientada a la línea como grep, tiene razón. Pero él todavía no ha dicho. –

+0

@goldenmean, ¿qué le impide usar. * En lugar de esa clase de personaje monstruo? –

0

aquí está mi contribución en C#:

de cadenas de texto:

string stream = :: This is a comment line 

sintaxis:

Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline); 

Uso:

Console.WriteLine(commentsExp.Replace(stream, string.Empty)); 

Como alternativa, si quería tomar simplemente un archivo de texto que incluye comentarios y producir un duplicado exacto sin las líneas de comentario que podría utilizar una combinación simple pero eficaz del tipo y Herramientas de línea de comandos findstr:

type commented.txt | findstr /v /R "^::" > uncommented.txt 
Cuestiones relacionadas