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

185
Visualizações
Capturar todo el texto entre delimitadores solo cuando hay un salto de línea

Estoy tratando de capturar el texto entre 2 delimitadores solo cuando también hay un avance de línea dentro de los delimitadores. Entonces, por ejemplo, si tenemos el siguiente texto.

 Organisation Name <<me.company.name>> ABN/ACN <<me.company.abn>> Contact Name <<me.name>> <<me.PhoneNumber Another line>> Email <<me.emailAddress>>

Solo quiero devolver <<me.PhoneNumber \n\n 'Otra línea>>

el \n podría estar en cualquier lugar, básicamente solo las coincidencias que tienen al menos un \n dentro de << >> e ignorar todos los demás << >>

El patrón que tengo hasta ahora es <<(. ?\n )*?>> pero esto captura todo << >> (estoy usando C#)

aquí hay un ejemplo de lo que he intentado https://regex101.com/r/sb0wCs/1

Muchas gracias por su ayuda

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

0

Puedes usar

 <<((?:(?!<<|>>).)*?\n(?s:.)*?)>>

Vea la demostración de expresiones regulares . Detalles :

  • << - una cadena <<
  • ((?:(?!<<|>>).)*?\n(?s:.)*?) - Grupo 1:
    • (?:(?!<<|>>).)*? - cualquier cero o más caracteres (que no sean caracteres de nueva línea) que no comiencen >> o << secuencia de caracteres, la menor cantidad posible
    • \n - un carácter LF
    • (?s:.)*? - cualquier cero o más caracteres (incluidos los caracteres de nueva línea), la menor cantidad posible
  • >> - una cadena >>
over 4 years ago · Santiago Trujillo Relatório

0

En su patrón <<(.*?\n*)*?>> tiene un grupo de captura y todas las partes son opcionales, incluida la nueva línea, por lo que el cuantificador no codicioso *? puede coincidir hasta la primera aparición de >>

Además, al repetir un grupo de captura, el valor del grupo contendrá el valor de la última iteración, por lo que en su lugar puede colocar el grupo de captura sin un cuantificador alrededor de la parte completa que desea capturar.


Si sus cadenas comienzan al principio de la línea, puede usar anclas y hacer coincidir al menos una sola línea en el medio que no comience con << o >>

 ^\s*<<(.*(?:\r?\n(?!<<|>>).*)+\r?\n)\s*>>$

Explicación

  • ^ Comienzo de cadena
  • \s*<< Coincide con los caracteres de espacio en blanco iniciales opcionales y <<
  • ( Grupo de captura 1
    • .* Coincide con el resto de la línea
    • (?:\r?\n(?!<<|>>).*)+ Haga coincidir una nueva línea y repita al menos 1 línea que no comience con << o >>
  • \r?\n Coincide con una nueva línea
  • ) Cerrar grupo 1
  • \s*>> Coincide con los caracteres de espacio en blanco iniciales opcionales y >>
  • $ Fin de la cadena

Vea una demostración de expresiones regulares .

over 4 years ago · Santiago Trujillo Relatório

0

Puedes probar esto: <<[^>]*?\n[^>]*>>

Pruebe la expresión regular aquí: https://regex101.com/r/vD3EgE/2

 <<[^>]*?\n[^>]*>> << match literal << [^>]*? match any char that is not > as few as possible \n match a newline [^>]* match any char that is not > as few as possible >> match literal >>
  • Esto coincidirá solo si hay \n entre << y >> .
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