Pregunta

Necesito ayuda con Regex, por favor.

Pensé que tenía SVN felizmente integrado con Mantis hasta que llegué a un problema con un checkin que contiene múltiples problemas. Estoy usando mantis de 1.2.5

El mensaje de confirmación que estoy tratando de apoyar podría gustar: "Los problemas #74 78 112 hicieron algo para la línea 485 que solo tomó 3 horas y 27 minutos". Necesito que mi regexp regrese [74, 78, 112] (pero no [485, 7, 27]).

Mi actual' $g_source_control_regexp = '/\b(bug|issue)[s]{0,1}\s*[#]{0,1}\s*(\d+\s+)+/i' parece estar devolviendo 1 elemento de 'Problemas #74 78 112' que no actualiza nada

Cualquier consejo apreciado.

Jim

¿Fue útil?

Solución

No creo que puedas hacer eso con Just Regex. Los grupos de captura repetidos capturan solo la última iteración (lea más sobre Repetir un grupo de captura frente a capturar un grupo repetido)

De lo contrario, lo haría así (tenga en cuenta que no soy un programador de PHP ...):

str.match(/\b(?:bug|issue)s?\s*#?\s*((?:\d+\s+)+)/i)[1].trim().split(/\s+/)
result: ["74", "78", "112"]
  • (?:) ¿Son grupos no capturantes?
  • matches[0] suele ser la coincidencia de patrón completo
  • matches[1] es el primer grupo capturado (el único en este caso)
  • trim() es necesario deshacerse de un espacio adicional al final (sin él obtendrías un grupo vacío al final ["74", "78", "112", ""])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top