2010-12-16 9 views
5

¿Puede alguien ayudarme con una expresión regular que cogerá el siguiente:expresiones regulares para el contenido entre e incluyendo las parenthees

  • tiene que estar en el extremo de la cadena
  • borra todos los caracteres entre (e) incluyendo el paréntesis

Me lo voy a hacer en javascript.

esto es lo que tengo hasta ahora -

var title = $(this).find('title').text().replace(/\w+\s+\(.*?\)/, ""); 

Parece ser que la captura de algunos de los caracteres externos parenthees sin embargo.

+0

parens Posiblemente anidados? Si es así, olvídalo. Regex no puede analizar los delimitadores anidados. – delnan

+0

En una expresión regular separada, también necesito poder eliminar los caracteres < and >. – steve

+0

sin paréntesis anidados. Algo para atrapar esto - Pruebas de Hockey sobre Hielo (1/6/2011 - 1/7/2011) – steve

Respuesta

1

Esto trata de la coincidencia entre parens, y solo en el de la cadena: \([^(]*\)\s*$. Si los parens pueden estar anidados, necesita un analizador, no una expresión regular.

+0

¡gracias perfecto! – steve

+0

re: anidado - http://xregexp.com/plugins/#matchRecursive – Orbling

0
var title = $(this).find('title').text().replace(/\([^()]*\)\s*$/, ""); 

debería funcionar.

Para eliminar < y > que realmente no necesita expresiones regulares, pero por supuesto se puede hacer un mystr.replace(/[<>]+/g, "");

Esto corresponderá con un (, cualquier número de caracteres, excepto paréntesis (lo que garantiza que sólo los últimos paréntesis se coincidencia) y un ), y luego el final de la cadena.

Actualmente, permite el espacio en blanco entre los paréntesis y el final de la cadena (y también la eliminará). Si eso no se desea, elimine el bit \s* de la expresión regular.

+0

gracias tim, ¿me puedes ayudar con uno más? En una expresión regular separada, también necesito poder eliminar el carácter < and >, no necesito quitar los caracteres entre. – steve

+0

3:00 PM - 4:00 PM ] + /, ""); – steve

+0

Deja una calle steve

0

¿Dónde está el $? Necesita un dólar al final y posiblemente atrape espacios en blanco opcionales.

var title = $(this).find('title').text().replace(/\s*\([^\)]*?\)\s*$/, ""); 

Si soportes también pueden ser soportes de ángulo, entonces esto puede coincidir con los que son demasiado:

var title = $(this).find('title').text().replace(/\s*(\([^\)]*?\)|\<[^\>]*?\>)\s*$/, ""); 
+0

Esto todavía coincidirá desde el primer hasta el último paréntesis en toda la cadena, no solo el último par. Recuerde la regla más a la izquierda: el cuantificador vago no hace ninguna diferencia en este caso. –

+0

@Tim Pietzcker: Muy bien, ajustado para adaptarse. – Orbling

Cuestiones relacionadas