2012-02-16 23 views
70

Por lo tanto, con la expresión regular en Java, quiero escribir una expresión regular que coincida solo si el patrón no va precedido de ciertos caracteres. Por ejemplo:regex para hacer coincidir algo si no está precedido por otra cosa

String s = "foobar barbar beachbar crowbar bar "; 

Quiero hacer coincidir si la barra no está precedida por foo. Así que la salida sería:

barbar 
beachbar 
crowbar 
bar 

Sé que esta es probablemente una pregunta muy simple. Estoy tratando de aprender regex, pero mientras tanto necesito algo para trabajar ahora.

+2

Tu pregunta no está del todo clara. ¿Desea hacer coincidir si su secuencia completa o cada palabra (separada por espacio) no está precedida por ciertos caracteres? –

Respuesta

125

que desea utilizar negative lookbehind así:

\w*(?<!foo)bar 

Dónde (?<!x) significa "sólo si no tiene 'x' antes de este punto".

Consulte Regular Expressions - Lookaround para obtener más información.

Editar: agregó \w* para capturar los caracteres anteriores (por ejemplo, "playa").

Cuestiones relacionadas