Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

234
Vistas
Regex para hacer coincidir algo si no está precedido por otra cosa

Con expresiones regulares en Java, quiero escribir una expresión regular que coincida si y solo si el patrón no está precedido por ciertos caracteres. Por ejemplo:

 String s = "foobar barbar beachbar crowbar bar ";

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

 barbar beachbar crowbar bar
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Desea usar negative lookbehind de esta manera:

 \w*(?<!foo)bar

Donde (?<!x) significa "solo si no tiene "x" antes de este punto".

Consulte Expresiones regulares - Lookaround para obtener más información.

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

over 4 years ago · Santiago Trujillo Denunciar

0

Otra opción es hacer coincidir primero los caracteres de palabras opcionales seguidos de bar , y cuando haya coincidido, verifique que lo que está directamente a la izquierda no sea foobar .

La aserción lookbehind se ejecutará después de hacer coincidir la bar primero.

 \w*(?<!foo)bar
  • \w* Coincide con 0+ caracteres de palabra

  • bar Match literalmente

  • (?<!foobar) Negativo mirar atrás, afirmar desde la posición actual foobar no está directamente a la izquierda.

Demostración de expresiones regulares

over 4 years ago · Santiago Trujillo Denunciar

0

En algunos casos, podría ser más fácil incluir opcionalmente la parte anterior y luego omitir esas coincidencias en un segundo paso. Por ejemplo, para encontrar números que no comiencen con un "+":

 if (preg_match_all('/(\+?[0-9][0-9\s\-].*[0-9])/s',$text,$matches)) { foreach($matches[1] as $match) { if(substr($match,0,1) == '+'){ continue; } // continue processing } }

La mirada negativa detrás no funcionó, ya que aún coincidiría con más de 2 dígitos, pero no incluiría el primer dígito en la coincidencia. Por ejemplo, +1234 se devolvería como 234.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda