Estoy tratando de usar lookbehinds en una expresión regular y parece que no funciona como esperaba. Entonces, este no es mi uso real, pero para simplificar voy a poner un ejemplo. Imagine que quiero hacer coincidir "ejemplo" en una cadena que dice "esto es un ejemplo". Así, de acuerdo con mi comprensión de lookbehinds esto debería funcionar:La expresión regular Lookbehind no funciona con los cuantificadores ('+' o '*')
(?<=this\sis\san\s*?)example
Lo que esto debe hacer es encontrar "Se trata de una", entonces los caracteres de espacio y finalmente coincide con la palabra "ejemplo". Ahora, no funciona y no entiendo por qué, ¿es imposible usar '+' o '*' dentro de lookbehinds?
También probé los dos y que funcionan correctamente, pero no cumplen mis necesidades:
(?<=this\sis\san\s)example
this\sis\san\s*?example
estoy usando este sitio para poner a prueba mis expresiones regulares: http://gskinner.com/RegExr/
Esto necesita una etiqueta que identifica el idioma o el medio ambiente donde los usas Las expresiones regulares de .NET manejan esto sin problemas. – Joey
¡Aviso! Si tu expresión regular funcionaría como quisieras, también coincidirá con 'example' de esto:' this is anexample'. Entonces, si no lo desea, debe eliminar el '?' – noob
micha: Probablemente deberían simplemente cambiar el * por un '+'. Eliminar el '?' No tiene ningún efecto en ese sentido. Pero de hecho, '*?' Como cuantificador es inútil e innecesario en este caso ya que no hay más espacios en blanco para que coincida después de eso, por lo que '\ s *?' Es equivalente a '\ s *'. – Joey