Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

123
Visualizações
Regex devuelve verdadero si incluso una subcadena sigue el patrón

Estaba practicando expresiones regulares y encontré algo intrigante

por una cadena

"world9 a9$ b6$" mi expresión regular "^(?=.*[\\d])(?=\\S+\\$).{2,}$"

devolverá falso ya que hay un espacio en el medio antes de que la mirada hacia adelante encuentre el signo $ con al menos un dígito y un carácter sin espacio.

En su conjunto, la cadena no coincide con el patrón.

¿Cuál debería ser la expresión regular si quiero devolver verdadero incluso si una subcadena sigue un patrón? como en este, a9$ y b6$ siguen la expresión regular.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puedes usar

 ^(?=\D*\d)(?=.*\S\$).{2,}$

Vea la demostración de expresiones regulares . Como menciona el cuarto pájaro , dado que \S\$ coincide con dos caracteres, simplemente puede mover el patrón a la parte de consumo y usar ^(?=\D*\d).*\S\$.*$ , vea esto demostración de expresiones regulares .

Detalles

  • ^ - inicio de cadena (implícito si se usa en .matches() )
  • (?=\D*\d) - una anticipación positiva que requiere cero o más caracteres que no sean dígitos seguidos de un carácter de dígito inmediatamente a la derecha de la ubicación actual
  • (?=.*\S\$) : una anticipación positiva que requiere cero o más caracteres que no sean caracteres de salto de línea, tantos como sea posible, seguido de un carácter que no sea un espacio en blanco y un carácter $ inmediatamente a la derecha de la ubicación actual
  • .{2,} : dos o más caracteres que no sean caracteres de salto de línea, tantos como sea posible
  • $ - final de cadena (implícito si se usa en .matches() )
over 4 years ago · Santiago Trujillo Relatório

0

En su mayoría, elimine los bits ^ y $ , ya que obligan a esto a una coincidencia de cadena completa, y desea coincidencias de subcadena. En general, mirar hacia adelante parece un error aquí, ¿qué está tratando de lograr al usar eso? (En general, rara vez se necesita mirar hacia adelante/mirar hacia atrás). Todo lo que necesitas es:

 Pattern.compile("\\S+\\$");

posiblemente, si desea que un elemento (como a9$ ) se sostenga por sí solo, use \b , que es expresión regular para salto de palabra: básicamente, espacios en blanco (y algunos otros caracteres, como guiones bajos. los caracteres de dígitos se consideran un descanso Piense [^a-zA-Z0-9] ) - pero \b también coincide con el inicio/final de la entrada. Por lo tanto:

 Pattern.compile("\\b\\S+\\$\\b")

aún coincide foo a9$ bar , o bien a9$ .

Si DEBE poner esto en términos de una coincidencia completa, por ejemplo, porque se ejecuta matches() (que siempre hace una coincidencia de cadena completa) y no puede cambiar eso, bueno, coloque ^.* delante y .*$ al final. atrás, tan simple como eso.

Absolutamente nada sobre esto dice "Esto solo se puede necesitar con anticipación".

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda