2009-07-16 18 views

Respuesta

44

Dado que los paréntesis son caracteres especiales en expresiones regulares, debe escaparse de ellos para que coincidan explícitamente.

Por ejemplo:

"\\(.+?\\)" 
+3

Él podría querer +? si puede haber varias piezas entre paréntesis. – glmxndr

+2

Wups, ella. – glmxndr

+0

sí, ella. Pongo "?" solo en caso de múltiples casos parenthized. @jjnguy: gracias por la explicación. ¡Funciona! – Lily

8

Se puede usar la siguiente expresión regular para encontrar parentéticos:

\([^)]*\) 

los \( partidos en un paréntesis de apertura, el [^)]* coincide con cualquier número de caracteres que no sean el paréntesis derecho, y el \) coincide en un paréntesis a la derecha.

Si va a incluir esto en una cadena de Java, debe escapar de las \ personajes como el siguiente:

String regex = "\\([^)]*\\)"; 
3
String foo = "bar (baz)"; 
String boz = foo.replaceAll("\\(.+\\)", ""); // or replaceFirst 

boz es ahora "bar "

11
String foo = "(x)()foo(x)()"; 
String cleanFoo = foo.replaceAll("\\([^\\(]*\\)", ""); 
// cleanFoo value will be "foo" 

Lo anterior elimina vacía y paréntesis no vacíos desde cualquier lado de la cadena.

expresión regular sencilla:

\([^\(]*\)

Puede probar aquí:. http://www.regexplanet.com/simple/index.html

Mi código se basa en las respuestas anteriores

Cuestiones relacionadas