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

290
Vistas
JS Regex: encuentra una subcadena que contiene caracteres especiales

¿Me pueden ayudar a entender cómo hacer lo siguiente?

Tengo cadenas (3 formatos para esta cadena):

  1. "Sección_1: hola y adiós | sección_2: kuku"
  2. "Sección_1: hola y adiós y hola | sección_2: kuku"
  3. "Sección_1: hola | sección_2: kuku"

Quiero obtener el resultado:

  1. Sección de grupo_1: "hola y adiós", Sección de grupo_2: "kuku"
  2. Sección de grupo_1: "hola, adiós y hola", Sección de grupo_2: "kuku"
  3. Sección de grupo_1: "hola", Sección de grupo_2: "kuku"

Ahora tengo la expresión regular (pero no me funciona debido al '&'):

 Section_1:\s*(?<section_1>\w+)(\s*\|\s*(Section_2:(\s*(?<section_2>.*))?)?)?

Nota: la expresión regular está capturando 2 grupos: "sección_1" y "sección_2"

La pregunta es: ¿cómo puedo leer la subcadena? La lata contiene cero o más de " & {palabra}"

Gracias por adelantado

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Según los comentarios, establecimos que la combinación ' & '- actúa como un delimitador entre palabras. Probablemente hay muchas formas de escribir un patrón para capturar estas subcadenas, pero para mí, estas se pueden agrupar en extensas o simples. Dependiendo de si necesita validar la entrada más a fondo, puede usar:

 ^section_1:\s*(?<section_1>[az]+(?:\s&\s[az]+)*)\s*\|\s*section_2:\s*(?<section_2>[az]+(?:\s&\s[az]+)*)$

Vea una demostración en línea. El patrón significa:

  • ^ - Anclaje de línea de salida;
  • section_1:\s* - Coincide con 'Section_1:' literalmente seguido de 0+ caracteres de espacio en blanco;
  • (?<section_1>[az]+(?:\s+&\s[az]+)*) - Un grupo de captura con nombre para capturar [az]+ como 1+ letras mayúsculas/minúsculas (marca que no distingue entre mayúsculas y minúsculas), seguido de un grupo de no captura anidado que coincide con 0+ veces el patrón (?:\s&\s[az]+)* para probar cualquier delimitador como se indicó anteriormente, seguido de otra palabra;
  • \s*\|\s*section_2:\s* - Coincide con los caracteres de espacio en blanco, un símbolo de tubería literal y, literalmente, 'Sección_2:' hasta;
  • (?<section_2>[az]+(?:\s&\s[az]+)*) - Un segundo grupo de captura con nombre que coincide con el mismo patrón que el grupo de captura con nombre anterior;
  • $ - Anclaje de línea final.

Nota : como se mencionó, hay un montón de patrones diferentes que uno podría usar dependiendo de qué tan específico deba ser acerca de la validación de la entrada. Por ejemplo: \s*(?<section_1>[^:|]+?)\s*\|\s*[^:]*:\s*(?<section_2>.+) también puede funcionar.

about 4 years ago · Juan Pablo Isaza 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