Necesito ayuda para declarar una expresión regular. Mis entradas son como las siguientes:
this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>.
and there are many other lines in the txt files
with<[3> such tags </[3>
La salida requerida es:
this is a paragraph with in between and then there are cases ... where the number ranges from 1-100.
and there are many other lines in the txt files
with such tags
He intentado esto:
#!/usr/bin/python
import os, sys, re, glob
for infile in glob.glob(os.path.join(os.getcwd(), '*.txt')):
for line in reader:
line2 = line.replace('<[1> ', '')
line = line2.replace('</[1> ', '')
line2 = line.replace('<[1>', '')
line = line2.replace('</[1>', '')
print line
También probé esto (pero parece que estoy usando la sintaxis de expresiones regulares incorrecta):
line2 = line.replace('<[*> ', '')
line = line2.replace('</[*> ', '')
line2 = line.replace('<[*>', '')
line = line2.replace('</[*>', '')
No quiero codificar el replace
1 al 99. . .
where the<[99> number ranges from 1-100</[100>
?<...>
etiqueta, por lo que el resultado debería serwhere the number rangers from 1-100 ?
Respuestas:
Este fragmento probado debería hacerlo:
Editar: Aquí hay una versión comentada que explica cómo funciona:
¡Las expresiones regulares son divertidas! Pero recomendaría pasar una o dos horas estudiando los conceptos básicos. Para empezar, debes aprender qué personajes son especiales: "metacaracteres" que deben escaparse (es decir, con una barra invertida colocada al frente, y las reglas son diferentes dentro y fuera de las clases de caracteres). Hay un excelente tutorial en línea en: www .regular-expressions.info . El tiempo que pase allí se amortizará muchas veces. Feliz regexing!
fuente
str.replace()
hace reemplazos fijos. Usar en sure.sub()
lugar.fuente
Me gustaría ir así (regex explicado en los comentarios):
Si desea obtener más información sobre la expresión regular, le recomiendo leer el Libro de cocina de expresiones regulares de Jan Goyvaerts y Steven Levithan.
fuente
*
lugar de{0,}
{0,}
es lo mismo que*
,{1,}
es equivalente a+
, y{0,1}
es lo mismo que?
. Es mejor usar*
,+
o?
cuando puedes, simplemente porque son más cortos y fáciles de leer.La forma más fácil
fuente
<[^>]+>
? Por cierto: creo que su expresión regular coincidiría demasiado (por ejemplo, algo así como<html>
)El método de reemplazo de objetos de cadena no acepta expresiones regulares sino solo cadenas fijas (consulte la documentación: http://docs.python.org/2/library/stdtypes.html#str.replace ).
Tienes que usar el
re
módulo:fuente
\d+
lugar de[0-9]+
no tiene que usar expresiones regulares (para su cadena de muestra)
fuente
fuente