2010-08-19 24 views
17

Parece que no puedo encontrar un buen recurso en esto .. Estoy tratando de hacer un simple re.placePython Regex, re.sub, reemplazando varias partes del patrón?

Quiero reemplazar la parte donde está (. *?), Pero no puedo entender la sintaxis sobre cómo hacer esto ... sé cómo hacerlo en PHP, así que he estado jugando con lo que creo que podría estar basado en eso (que es por lo que tiene el $ 1 pero sé que no es correcto en python). Apreciaría si alguien puede mostrar la sintaxis adecuada, no estoy pidiendo detalles para una determinada cadena, solo cómo puedo reemplazar algo así, o si tenía más de 1() área ... gracias

originalstring = 'fksf var:asfkj;' 
pattern = '.*?var:(.*?);' 
replacement_string='$1' + 'test' 
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring) 
+1

¿Puedes dar un ejemplo de lo que quieres que sea exactamente la cadena resultante? ¿Es 'asfkjtest'? – mikej

+0

es sólo un ejemplo, no importa para qué sirve, tengo muchas cosas de expresiones regulares que hice en PHP que no estoy tratando de hacer en Python, así que solo necesito tener la idea de cómo hacerlo abajo – Rick

Respuesta

18
>>> import re 
>>> originalstring = 'fksf var:asfkj;' 
>>> pattern = '.*?var:(.*?);' 
>>> pattern_obj = re.compile(pattern, re.MULTILINE) 
>>> replacement_string="\\1" + 'test' 
>>> pattern_obj.sub(replacement_string, originalstring) 
'asfkjtest' 

Editar: El Python Docs puede ser una referencia muy útil.

+6

Lo sé, no sé por qué esto es mencionado por todos (sobre los documentos de Python), ya sé sobre estos y los he revisado, estoy publicando aquí ya que todavía no tengo claro cómo hacerlo después Al consultar esto, Python no parece ser como PHP, donde tiene varios otros recursos sobre un tema como este, así que, después de más búsquedas, sentí que debería publicar aquí (no estoy criticando a Python por esto, ya que me encanta es solo una observación) – Rick

+0

de todos modos, gracias por la ayuda en publicar el ejemplo, lo aprecio – Rick

+0

Vaya, no lo vi. ¡Me alegro de poder ayudar! – Umang

-3

Los documentos de Python están en línea, y el del módulo re está aquí. http://docs.python.org/library/re.html

Para responder a su pregunta, Python usa \ 1 en lugar de $ 1 para referirse a grupos coincidentes.

7
>>> import re 
>>> regex = re.compile(r".*?var:(.*?);") 
>>> regex.sub(r"\1test", "fksf var:asfkj;") 
'asfkjtest' 
Cuestiones relacionadas